sashadeg
06-02-2010, 14:09
Возникла небольшая проблеммка с использованием рисунка
Как то я уже спрашивал на эту тему, и мне подкинули хороший скриптик плавного появления картинки.
Я его подкорректировал под мгновенное появление изображения, но не могу найти как сделать так, чтобы изображение появлялось не посреди экрана, а в координате x,y (0;0), и поверх всех окон
+ к этому, нужно чтобы изображение растягивалось на весь экран в зависимости от расширения
Название файла 3.jpg (кстати, может работать даже с .png)
Вот этот кодик:
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <GDIPlus.au3>
Global $opacity = 0
$gui = GUICreate("Transparent", 0, 0, -1, -1, $WS_POPUP , $WS_EX_LAYERED)
_GDIPlus_Startup ()
$image = _GDIPlus_ImageLoadFromFile ("3.jpg")
SetBitMap ($gui , $image, $opacity)
GUISetState()
For $i = 0 To 255 Step 255
SetBitmap ($gui, $image, $i)
Sleep (30)
Next
Func SetBitmap($gui, $image, $opacity)
$hScrDC = _WinAPI_GetDC (0)
$hMemDC = _WinAPI_CreateCompatibleDC ($hScrDC)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap ($image)
$hOld = _WinAPI_SelectObject ($hMemDC, $hBitmap)
$tSize = DllStructCreate ($tagSIZE)
$pSize = DllStructGetPtr ($tSize )
DllStructSetData ($tSize, "X", _GDIPlus_ImageGetWidth ($image))
DllStructSetData ($tSize, "Y", _GDIPlus_ImageGetHeight ($image))
$tSource = DllStructCreate ($tagPOINT)
$pSource = DllStructGetPtr ($tSource)
$tBlend = DllStructCreate ($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr ($tBlend)
DllStructSetData ($tBlend, "Alpha" , $opacity)
DllStructSetData ($tBlend, "Format", 1)
_WinAPI_UpdateLayeredWindow ($gui, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
_WinAPI_ReleaseDC (0, $hScrDC)
_WinAPI_SelectObject ($hMemDC, $hOld)
_WinAPI_DeleteObject ($hBitmap)
_WinAPI_DeleteDC ($hMemDC)
EndFunc
Как то я уже спрашивал на эту тему, и мне подкинули хороший скриптик плавного появления картинки.
Я его подкорректировал под мгновенное появление изображения, но не могу найти как сделать так, чтобы изображение появлялось не посреди экрана, а в координате x,y (0;0), и поверх всех окон
+ к этому, нужно чтобы изображение растягивалось на весь экран в зависимости от расширения
Название файла 3.jpg (кстати, может работать даже с .png)
Вот этот кодик:
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <GDIPlus.au3>
Global $opacity = 0
$gui = GUICreate("Transparent", 0, 0, -1, -1, $WS_POPUP , $WS_EX_LAYERED)
_GDIPlus_Startup ()
$image = _GDIPlus_ImageLoadFromFile ("3.jpg")
SetBitMap ($gui , $image, $opacity)
GUISetState()
For $i = 0 To 255 Step 255
SetBitmap ($gui, $image, $i)
Sleep (30)
Next
Func SetBitmap($gui, $image, $opacity)
$hScrDC = _WinAPI_GetDC (0)
$hMemDC = _WinAPI_CreateCompatibleDC ($hScrDC)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap ($image)
$hOld = _WinAPI_SelectObject ($hMemDC, $hBitmap)
$tSize = DllStructCreate ($tagSIZE)
$pSize = DllStructGetPtr ($tSize )
DllStructSetData ($tSize, "X", _GDIPlus_ImageGetWidth ($image))
DllStructSetData ($tSize, "Y", _GDIPlus_ImageGetHeight ($image))
$tSource = DllStructCreate ($tagPOINT)
$pSource = DllStructGetPtr ($tSource)
$tBlend = DllStructCreate ($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr ($tBlend)
DllStructSetData ($tBlend, "Alpha" , $opacity)
DllStructSetData ($tBlend, "Format", 1)
_WinAPI_UpdateLayeredWindow ($gui, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
_WinAPI_ReleaseDC (0, $hScrDC)
_WinAPI_SelectObject ($hMemDC, $hOld)
_WinAPI_DeleteObject ($hBitmap)
_WinAPI_DeleteDC ($hMemDC)
EndFunc