Что нового

Реализация медленного появления изображения в окне

cracker24

Новичок
Сообщения
6
Репутация
0
Здравствуйте! В общем проблема такая : как реализовать медленное (плавное) появление изображения, без мерцания , в окне, формат изображения JPG или BMP .
Смысл этой идеи в том чтобы реализовать изменение вида нарисованной в фотошопе графической кнопки при наведении курсора .
В одной из тем нашел и пытался реализовать вот этот код :
Код:
#include <WindowsConstants.au3>
#include <GDIPlus.au3>

$hGui = GUICreate('Test', -1, -1, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
GUISetState()
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & '\iexplorer.png')
$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, 'Format', 1)
For $i = 0 To 255 Step 5
    DllStructSetData($tBlend, 'Alpha', $i)
    _WinAPI_UpdateLayeredWindow($hGui, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
    Sleep(50)
Next
Sleep(3000)
For $i = 255 To 0 Step -5
    DllStructSetData($tBlend, 'Alpha', $i)
    _WinAPI_UpdateLayeredWindow($hGui, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
    Sleep(50)
Next
GUIDelete($hGui)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
_WinAPI_ReleaseDC(0, $hScrDC)
_WinAPI_SelectObject($hMemDC, $hOld)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteDC($hMemDC)
MsgBox(64, 'Info', 'Next code')


Но у меня не хватает знаний. В общем нужно чтобы изображение находилось внутри окна и окно отображалось.
Буду очень благодарен если кто-нибудь мне поможет!
 
Верх