Page 1 sur 1
[UDF] SplashPng avec transparence
Posté : jeu. 21 janv. 2010 19:17
par noman
Slt,
La function SplashImageOn est pratique mais ne prend pas en compte la transparence ainsi que les png.
Voici un petit UDF qui permet d'imiter la function SplashImageOn avec des png.
► Afficher le texte
Code : Tout sélectionner
#cs ----------------------------------------------------------------------------
AutoIt Version : 3.3.2.0
Auteur: noman
Fonction du Script :
splash logo png
#ce ----------------------------------------------------------------------------
#include-once
#include <GDIPlus.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
Opt("MustDeclareVars", 0)
Global Const $AC_SRC_ALPHA = 1
Func MySplash($Path_Logo, $Time_Splash)
_GDIPlus_Startup()
$pngSrc = $Path_Logo
$hImage = _GDIPlus_ImageLoadFromFile($pngSrc)
$width = _GDIPlus_ImageGetWidth($hImage)
$height = _GDIPlus_ImageGetHeight($hImage)
$GUI = GUICreate("logo", $width, $height, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
SetBitmap($GUI, $hImage, 0)
GUISetState()
WinSetOnTop($GUI, "", 1)
For $i = 0 To 255 Step 10
SetBitmap($GUI, $hImage, $i)
Next
Sleep($Time_Splash)
For $i = 255 To 0 Step -10
SetBitmap($GUI, $hImage, $i)
Next
_WinAPI_DeleteObject($hImage)
_GDIPlus_Shutdown()
GUIDelete($GUI)
EndFunc ;==>MySplash
Func SetBitmap($hGUI, $hImage, $iOpacity)
Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend
$hScrDC = _WinAPI_GetDC(0)
$hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
$hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
$tSize = DllStructCreate($tagSIZE)
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($hImage))
DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage))
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha", $iOpacity)
DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA)
_WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
_WinAPI_ReleaseDC(0, $hScrDC)
_WinAPI_SelectObject($hMemDC, $hOld)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteDC($hMemDC)
EndFunc ;==>SetBitmap
Exemple d'utilisation :
Code : Tout sélectionner
#include <splash.au3>
$Path_Logo = @ScriptDir & "\logo.png" ;Chemin vert le fichier .png à afficher
$Time_Splash = 1500 ;Durée d'affichage de l'image .png
MySplash($Path_Logo, $Time_Splash)
Infos :
il faut garder le noms des variables $Path_Logo et $Time_Splash
Pour un meilleur confort visuel la .png s affiche avec un fade in et disparait avec l'effet inverse fade out
Etant novice je pense qu'il y a moyen d'améliorer l'UDF, mais il fonctionne en l'état.
Re: [UDF] SplashPng avec transparence
Posté : lun. 25 janv. 2010 13:14
par Habibsbib
C'est pas vraiment un UDF, vu qu'il n'y a qu'une fonction utilisable directement. Autrement, pas mal, excellent même

Re: [UDF] SplashPng avec transparence
Posté : mer. 27 janv. 2010 15:05
par DJSIR
Amélioré :
- Ajout de la fonction On/Off
- Possibilité de désactiver le Fade
Bon travail noman.
Exemple d'utilisation :
Code : Tout sélectionner
#include <MySplash.au3>
$Path_Logo = @ScriptDir & "\PNG_FILE.png" ;Chemin vert le fichier .png à afficher
$Fade = 1 ;Choix d'activation du Fondu.
_MySplashOn($Path_Logo, $Fade) ;Fade n'est pas obligatoire, désactivé par défault
Sleep(1500)
_MySplashOff();On supprimme le Splash
Re: [UDF] SplashPng avec transparence
Posté : jeu. 28 janv. 2010 10:07
par Habibsbib
et pas
A ce que je saches, il n'est pas déja inclus dans la bibliothèque d'includes, non
Autrement, c'est vrai que c'est mieux comme ça DJ'

Re: [UDF] SplashPng avec transparence
Posté : jeu. 28 janv. 2010 10:36
par Iste
Evite de devoir le copier avec chaque script
Quand on télécharge un UDF (car il sagit bien d'une UDF, même si il n'y a qu'une fonction), on le place dans le répertoire \include d'autoit.
Les "include.au3" ne servent qu'a exporter des script avec plusieurs fichiers .au3
Apres chacun fait comme il vaut, mais c'est bien plus pratique ainsi.
Re: [UDF] SplashPng avec transparence
Posté : jeu. 28 janv. 2010 15:28
par Habibsbib
Ah, ok.
Je ne l'avais pas vu comme ça.
Re: [UDF] SplashPng avec transparence
Posté : mer. 24 août 2011 21:39
par karime1