Новый участник
Сообщения: 36
Благодарности: 2
Профиль
|
Отправить PM
| Цитировать
Изображения
1.png
(17.1 Kb, 29 просмотров)
Код:
;~ #include <GUIConstants.au3>
;~ -------------------------------------------------------
; Description :
; Written by : Alex Pougach
; Date : 22/12/2008
;
; With help of Igal Bravshtein and Creat0R
; --------------------------------------------------------
#include-once
; Transp_PNG( $temp , x , y),$temp = "E:\VBA\AutoIt\GUI\2.png"
; $temp- Doroga k file
; x - prozrachnost
; y- Plavnost poiavleniia
#NoTrayIcon
#include <GDIPlus.au3>
#include <GuiComboBox.au3>
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WinAPI.au3>
Global Const $WM_LBUTTONDOWN = 0x0201
Global Const $WM_LBUTTONUP = 0x0202
Global Const $ULW_ALPHA = 2
Global Const $AC_SRC_ALPHA = 1
Global $launchDir = @DesktopDir , $GUI
Global $iExitLoop = False
Func Transp_PNG( $temp , $iOpacity = 255 , $EnableFade = True )
If $iOpacity < 0 Then $iOpacity = 0
If $iOpacity > 255 Then $iOpacity = 255
; Load PNG file as GDI bitmap
_GDIPlus_Startup ()
$pngSrc = $temp
$hImage = _GDIPlus_ImageLoadFromFile ( $pngSrc )
; Extract image width and height from PNG
$width = _GDIPlus_ImageGetWidth ( $hImage )
$height = _GDIPlus_ImageGetHeight ( $hImage )
; Create layered window
$GUI = GUICreate ( "" , $width , $height , - 1 , - 1 , $WS_POPUP , $WS_EX_LAYERED )
WinSetOnTop ( $GUI , "" , 1 )
GUIRegisterMsg ( $WM_LBUTTONDOWN , "WM_LBUTTONDOWN" )
GUIRegisterMsg ( $WM_LBUTTONUP , "WM_LBUTTONUP" )
GUIRegisterMsg ( $WM_WINDOWPOSCHANGED , "WM_WINDOWPOSCHANGED" )
GUISetState ()
If $EnableFade Then
;fade in png background
For $i = 0 To $iOpacity Step 1
SetBitmap( $GUI , $hImage , $i )
Next
Else
SetBitmap( $GUI , $hImage , $iOpacity )
EndIf
; set default button for Enter key activation - renders outside GUI window
$BtnExit = GUICtrlCreateButton ( "Exit" , $width , $height , 10 , 10 , $BS_DEFPUSHBUTTON )
While 1
Switch GUIGetMsg ()
Case $GUI_EVENT_CLOSE , $BtnExit
ExitLoop
EndSwitch
If $iExitLoop Then ExitLoop
WEnd
If $EnableFade Then
;fade out png background
For $i = $iOpacity To 0 Step - 1
SetBitmap( $GUI , $hImage , $i )
Next
Else
SetBitmap( $GUI , $hImage , 0 )
EndIf
EndFunc ;==>Transp_PNG
; Handle the WM_LBUTTONDOWN for the layered window so it can be dragged by clicking anywhere on the image.
Func WM_LBUTTONDOWN( $hWnd , $iMsg , $wParam , $lParam )
If BitAND ( WinGetState ( $hWnd ), 32 ) Then Return $GUI_RUNDEFMSG
DllCall ( "user32.dll" , "long" , "SendMessage" , "hwnd" , $hWnd , "int" , $WM_SYSCOMMAND , "int" , 0xF009 , "int" , 0 )
EndFunc ;==>WM_LBUTTONDOWN
Func WM_LBUTTONUP( $hWnd , $iMsg , $wParam , $lParam )
$iExitLoop = True
EndFunc ;==>WM_LBUTTONUP
Func WM_WINDOWPOSCHANGED( $hWnd , $iMsg , $wParam , $lParam )
$iExitLoop = False
EndFunc ;==>WM_WINDOWPOSCHANGED
; SetBitMap
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
Мужыки спасибо
Получилось вот так :
$temp = @ScriptDir & "\1.png"
Transp_PNG($temp,x,y) ;-vizov
где :
$temp - дорога к file ($temp = @ScriptDir & "\1.png")
x - прозрачность
y - плавностьпоявления