Что нового

[Элементы GUI] Плавное появление картинки перед запуском скрипта

Atmas

Новичок
Сообщения
2
Репутация
0
Приветствую всех. Прошу вас помочь с этаким скриптом:
При запуске программы плавное появляется картинка(*png,*jpg)по истечению определенного времени она так же плавно исчезала ,и запускалось непосредственно окно программы.
 

rusreg79

Продвинутый
Сообщения
159
Репутация
57
Код:
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=

Global $Form1 = GUICreate("Form1", 348, 308, -1, -1, BitOR($WS_MINIMIZEBOX,$WS_POPUP,$WS_GROUP), BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
Global $Pic1 = GUICtrlCreatePic(@ScriptDir&"\image.jpg", 0, 0, 348, 308)
WinSetTrans($Form1, "", 0);
GUISetState(@SW_SHOW,$Form1)
For $i = 0 To 255 Step 2
	WinSetTrans($Form1, "", $i);Прозрачность 0-255
	Sleep(10)
Next
Sleep(2000)
For $i = 255 To 0 Step -2
	WinSetTrans($Form1, "", $i);Прозрачность 0-255
	Sleep(10)
Next
GUIDelete ($Form1 ) ;Удалить окно


Global $Form2 = GUICreate("Form2", 600, 400, -1, -1)
GUISetState(@SW_SHOW,$Form2)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit


	EndSwitch
WEnd
 
Автор
A

Atmas

Новичок
Сообщения
2
Репутация
0
Спасибо, как раз то что надо)
 

gecha

Новичок
Сообщения
7
Репутация
0
Подскажите пожалуйста а можно ли сделать тоже самое с картинкой в формате .png ?
Заранее спасибо !
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Можно. Через GDIPlus
Код:
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#Include <WinAPI.au3>

#Region ### START Koda GUI section ### Form=

Global $Form1 = GUICreate("Form1", 348, 308, -1, -1, BitOR($WS_MINIMIZEBOX,$WS_POPUP,$WS_GROUP), BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE,$WS_EX_LAYERED ))

_GDIPlus_StartUp()
$hImage   = _GDIPlus_ImageLoadFromFile(@ScriptDir&"\image.png")
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($Form1)

WinSetTrans($Form1, "", 0);
GUISetState(@SW_SHOW,$Form1)
For $i = 0 To 255 Step 2
    _WinAPI_RedrawWindow($Form1, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
    _WinAPI_RedrawWindow($Form1, 0, 0, $RDW_VALIDATE)
    WinSetTrans($Form1, "", $i);Прозрачность 0-255
    Sleep(10)
Next
Sleep(2000)
For $i = 255 To 0 Step -2
    _WinAPI_RedrawWindow($Form1, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
    _WinAPI_RedrawWindow($Form1, 0, 0, $RDW_VALIDATE)
    WinSetTrans($Form1, "", $i);Прозрачность 0-255
    Sleep(10)
Next
GUIDelete ($Form1 ) ;Удалить окно

Global $Form2 = GUICreate("Form2", 600, 400, -1, -1)
GUISetState(@SW_SHOW,$Form2)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

; Clean up resources
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_ShutDown()
 

gecha

Новичок
Сообщения
7
Репутация
0
Спасибо большое за ответ !
Подскажите пожалуйста еще , если .png изображение имеет прозрачный альфа-канал (т.е. фон) каким образом отобразить его ?
В данном примере прозрачный фон становится серым ,а хотелось бы чтобы было видно только само изображение без фона .
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
gecha
Посмотри эту тему, может поможет:
http://autoit-script.ru/index.php?topic=2263.0
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
gecha [?]
хотелось бы чтобы было видно только само изображение без фона
Код:
#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')
 

gecha

Новичок
Сообщения
7
Репутация
0
madmasles Спасибо большое то что нужно !
И всем еще раз спасибо за помощь !
 
Верх