huhu...
Also da ich leider nur sehr wenig Ahnung in Sachen GDI habe, ich aber etwas brauche was meiner Meinung nach nur mit der GDi geht ... bräuchte ich mal etwas Hilfe..
Ich habe bei mir in der Firma eine Informationssoftware entwickelt, die kurz vor der fertigstellung ist.
Jetzt benötige ich aber damit beim starten des Servers es etwas schöner aussieht und die Wartezeit etwas verschleiert wird ein Art Intro.
Eigentlich funktioniert es auch schon so wie ich es will... aber ich denke mal das es so sehr Umständlich gestaltet ist.
Hier erst mal der Quellcode..
Spoiler anzeigen
#include-once
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
#include <WinAPI.au3>
#include <GDIPlus.au3>
#include <StaticConstants.au3>
$Gui_width = 430
$Gui_height = 236
$Gui_Pos_X = -1
$Gui_Pos_Y = -1
$hGui = GUICreate('', $Gui_width, $Gui_height ,$Gui_Pos_X,$Gui_Pos_y,$WS_POPUP, BitOR($WS_EX_TOOLWINDOW,$WS_EX_TOPMOST))
[/autoit] [autoit][/autoit] [autoit]$hpic_bg = GUICtrlCreatePic('',0,0,430,236)
_SetImagefromResource($hpic_bg, "hg", "data.dll",2)
$hLabel_Version = GUICtrlCreateLabel( 'v. 2.0.1.64',$Gui_width-105,3,100,10, $SS_RIGHT)
GUICtrlSetBkColor ( -1,$GUI_BKCOLOR_TRANSPARENT )
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
GUICtrlSetColor (-1, 0xB0C4DE )
$hLabel_Footer = GUICtrlCreateLabel( 'Lizenz: ---'&@CRLF& _
'Beta Version'&@CRLF& _
'C .Schiffer 2010',$Gui_width-125,$Gui_height-42,120,40,$SS_RIGHT)
GUICtrlSetBkColor ( -1,$GUI_BKCOLOR_TRANSPARENT )
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
GUICtrlSetColor (-1, 0x000000 )
_WinFadeIn($hGui)
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_Startup()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hGUI)
Sleep ( 300 )
_StringFadeIn('Starte',50,190)
;--------------------------------------------------------------
; Hier kommt der zu verarbeitende Prozess rein...
Sleep ( 200 )
_StringSetNewText('Starte.',50,190)
Sleep ( 200 )
_StringSetNewText('Starte..',50,190)
Sleep ( 200 )
_StringSetNewText('Starte...',50,190)
Sleep ( 200 )
_StringSetNewText('Starte....',50,190)
Sleep ( 200 )
;--------------------------------------------------------------
_StringFadeOut('Starte....',50,190)
_StringFadeIn('prüfe Daten',50,190)
;--------------------------------------------------------------
; Hier kommt der zu verarbeitende Prozess rein...
Sleep ( 200 )
_StringSetNewText('prüfe Daten.',50,190)
Sleep ( 200 )
_StringSetNewText('prüfe Daten..',50,190)
Sleep ( 200 )
_StringSetNewText('prüfe Daten...',50,190)
Sleep ( 200 )
_StringSetNewText('prüfe Daten....',50,190)
Sleep ( 200 )
;--------------------------------------------------------------
_StringFadeOut('prüfe Daten....',50,190)
_StringFadeIn('starte Server',50,190)
;--------------------------------------------------------------
; Hier kommt der zu verarbeitende Prozess rein...
Sleep ( 200 )
_StringSetNewText('starte Server (15%)',50,190)
Sleep ( 200 )
_StringSetNewText('starte Server (30%)',50,190)
Sleep ( 200 )
_StringSetNewText('starte Server (60%)',50,190)
Sleep ( 200 )
_StringSetNewText('starte Server (85%)',50,190)
Sleep ( 200 )
;--------------------------------------------------------------
_StringFadeOut('starte Server (100%)',50,190)
Sleep (300)
_WinFadeOut($hGui)
;-------------------------------------------------------------------------------------------------
; Verändern
;-------------------------------------------------------------------------------------------------
Func _StringSetNewText($sString,$Pos_X,$Pos_Y)
_SetImagefromResource($hpic_bg, "hg", "data.dll",2)
GUICtrlSetState ( $hLabel_Version,$GUI_SHOW )
GUICtrlSetState ( $hLabel_Footer,$GUI_SHOW )
$hBrush = _GDIPlus_BrushCreateSolid("0x" & Hex(255, 2) & "FFFFFF")
$hFormat = _GDIPlus_StringFormatCreate()
$hFamily = _GDIPlus_FontFamilyCreate("Arial")
$hFont = _GDIPlus_FontCreate($hFamily, 13, 1)
;~ ConsoleWrite ( 14-((255/30)-($i/30))&@CRLF )
$tLayout = _GDIPlus_RectFCreate( $Pos_X, $Pos_Y, 0, 0)
;~ ConsoleWrite ( 190+(255/5)-($i/5)&@CRLF )
$aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $sString, $hFont, $tLayout, $hFormat)
_GDIPlus_GraphicsDrawStringEx($hGraphic, $sString, $hFont, $aInfo[0], $hFormat, $hBrush)
EndFunc
;-------------------------------------------------------------------------------------------------
; String Einblenden
;-------------------------------------------------------------------------------------------------
Func _StringFadeIn($sString,$Pos_X,$Pos_Y,$Step = 25 ,$Time = 20 )
$timerinit = TimerInit()
For $i = 0 To 255 Step $Step
Do
Sleep (1)
Until TimerDiff($timerinit) > $Time
$timerinit = TimerInit()
_SetImagefromResource($hpic_bg, "hg", "data.dll",2)
GUICtrlSetState ( $hLabel_Version,$GUI_SHOW )
GUICtrlSetState ( $hLabel_Footer,$GUI_SHOW )
$hBrush = _GDIPlus_BrushCreateSolid("0x" & Hex($i, 2) & "FFFFFF")
$hFormat = _GDIPlus_StringFormatCreate()
$hFamily = _GDIPlus_FontFamilyCreate("Arial")
$hFont = _GDIPlus_FontCreate($hFamily, 13-((255/30)-($i/30)), 1)
;~ ConsoleWrite ( 14-((255/30)-($i/30))&@CRLF )
If (255/8)-($i/8) < 2 Then
$Pos_Y_Wert = $Pos_Y+0
Else
$Pos_Y_Wert = $Pos_Y+(255/8)-($i/8)
EndIf
$tLayout = _GDIPlus_RectFCreate( $Pos_X, $Pos_Y_Wert, 0, 0)
;~ ConsoleWrite ( 190+(255/5)-($i/5)&@CRLF )
$aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $sString, $hFont, $tLayout, $hFormat)
_GDIPlus_GraphicsDrawStringEx($hGraphic, $sString, $hFont, $aInfo[0], $hFormat, $hBrush)
Next
EndFunc
;-------------------------------------------------------------------------------------------------
; String Ausblenden
;-------------------------------------------------------------------------------------------------
Func _StringFadeOut($sString,$Pos_X,$Pos_Y,$Step = 25 ,$Time = 15)
$timerinit = TimerInit()
For $i = 255 To 0 Step -$Step
If $i < 11 Then $i = 0
Do
Sleep (1)
Until TimerDiff($timerinit) > $Time
$timerinit = TimerInit()
_SetImagefromResource($hpic_bg, "hg", "data.dll",2)
GUICtrlSetState ( $hLabel_Version,$GUI_SHOW )
GUICtrlSetState ( $hLabel_Footer,$GUI_SHOW )
$hBrush = _GDIPlus_BrushCreateSolid("0x" & Hex($i, 2) & "FFFFFF")
$hFormat = _GDIPlus_StringFormatCreate()
$hFamily = _GDIPlus_FontFamilyCreate("Arial")
$hFont = _GDIPlus_FontCreate($hFamily, 13-((255/30)-($i/30)), 1)
;~ ConsoleWrite ( 14-((255/30)-($i/30))&@CRLF )
$tLayout = _GDIPlus_RectFCreate($Pos_X, $Pos_Y, 0, 0)
;~ ConsoleWrite ( 190+(255/5)-($i/5)&@CRLF )
$aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $sString, $hFont, $tLayout, $hFormat)
_GDIPlus_GraphicsDrawStringEx($hGraphic, $sString, $hFont, $aInfo[0], $hFormat, $hBrush)
Next
EndFunc
;-------------------------------------------------------------------------------------------------
; Gui Einblenden
;-------------------------------------------------------------------------------------------------
Func _WinFadeIn($hGui,$timertime = 20 ,$blendzize = 1.25 )
WinSetTrans($hGui, "",0)
GUISetState ( @SW_SHOW, $hGui)
$i = 1
$timerinit = TimerInit()
Do
If TimerDiff($timerinit) > $timertime Then
$i = $i*$blendzize
If $i > 255 Then ExitLoop
WinSetTrans($hGui, "",$i)
$timerinit = TimerInit()
EndIf
Until $i > 255
WinSetTrans($hGui, "",255)
EndFunc
;-------------------------------------------------------------------------------------------------
; Gui Ausblenden
;-------------------------------------------------------------------------------------------------
Func _WinFadeOut($hGui,$timertime = 20 ,$blendzize = 0.75 )
WinSetTrans($hGui, "",255)
$i = 255
$timerinit = TimerInit()
Do
If TimerDiff($timerinit) > $timertime Then
$i = $i*$blendzize
If $i < 5 Then ExitLoop
WinSetTrans($hGui, "",$i)
$timerinit = TimerInit()
EndIf
Until $i < 5
WinSetTrans($hGui, "",0)
GUISetState ( @SW_HIDE, $hGui)
EndFunc
;-------------------------------------------------------------------------------------------------
; Image aus dll
;-------------------------------------------------------------------------------------------------
Func _SetImagefromResource($CtrlID, $Resname, $Resfile = -1, $ResType = 10)
Local Const $IMAGE_BITMAP = 0
Local Const $STM_SETIMAGE = 0x0172
Local $hmod, $hwnd, $InfoBlock, $ResSize, $Mem, $pMem, $dll, $dll2, $hData, $pData, $pStream, $ret, $hBitmap, $pBitmap
$hmod = _WinAPI_LoadLibrary($Resfile)
If $ResType = 2 Then
$hBitmap = _WinAPI_LoadImage($hmod, $Resname, $IMAGE_BITMAP, 0, 0, 0)
If @error Then Return SetError(1, 0, 0)
$hwnd = GUICtrlGetHandle($CtrlID)
If $hwnd = 0 Then Return SetError(2, 0, 0)
DllCall("user32.dll", "hwnd", "SendMessage", "hwnd", $hwnd, "int", $STM_SETIMAGE, "int", $IMAGE_BITMAP, "int", $hBitmap)
If @error Then Return SetError(3, 0, 0)
EndIf
EndFunc
Damit man das Bild sieht müsst ihr die dll im Verzeichnis haben, die Angehangen ist.
In meiner jetztigen Version Zeichne ich immer in eine GDI Grafik den Text und überschreibe es dann wieder mit dem Hintergrundbild..
das ist aber etwas unsinnig und flackert etwas...
Wäre froh über einen bessere Lösung...
Danke schonmal
MFG chris