Hey@all
So es ist so weit, ich lerne endlich mal gdi+ . Da ich ja erst damit anfange habe ich ein paar Fragen an euch:
-welches registermsg fehlt noch? - zeichnet nicht neu nach fenster überlappung
-zeichnet farbe nicht drüber, sondern "vermischt" mit der vorherigen, wie kann ich das ändern?
-und sonst pls mal drüber gucken ob das so vormell richtig ist
-Wie kann man RGB to ARGB konventivern? gibt kein _colorgetalpha()
Mein Skript:
Spoiler anzeigen
#include <GuiConstantsEx.au3>
#include <GDIPlus.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
;#include <Color.au3>
;#include <Misc.au3>
Local $hGUI, $hWnd, $hGraphic, $hBrushDunkel, $hFormat, $hFamily, $hFont, $tLayout, $hPenDunkel, $hPenHell, $hBrushHell, $ZifferFormat[11], $ZifferFont, $hBrushMittel, $hPenMittel
Local $iWidth=700, $iHeight=500, $WindowWidth=500, $WindowHeight=300, $PenWidth=5, $xy=Round($PenWidth/2,1), $TitelHeight=25, $BigAbstand=5
GUIRegisterMsg($WM_PAINT, "_ReDraw")
OnAutoItExitRegister("_Exit")
$hGUI = GUICreate("GDI+", $iWidth, $iHeight)
GUISetState()
_GDIPlus_Startup()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
$hFormat = _GDIPlus_StringFormatCreate()
$hFamily = _GDIPlus_FontFamilyCreate("Arial")
$hFont = _GDIPlus_FontCreate($hFamily,12,1)
$tLayout = _GDIPlus_RectFCreate($iWidth/2-$WindowWidth/2+2.5,$iHeight/2-$WindowHeight/2+2.5,$WindowWidth+2.5,20)
$hPenDunkel=_GDIPlus_PenCreate(0x7F00007F,$PenWidth)
$hBrushDunkel = _GDIPlus_BrushCreateSolid(0x7F00007F)
$hPenHell=_GDIPlus_PenCreate(0x5F00005F,$PenWidth)
$hBrushHell=_GDIPlus_BrushCreateSolid(0x1E00001E)
$hPenMittel = _GDIPlus_PenCreate(0x2E00002E)
$hBrushMittel = _GDIPlus_BrushCreateSolid(0x2F00002F)
$ZifferFont = _GDIPlus_FontCreate($hFamily,25,1)
_ReDraw()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _ReDraw()
_GDIPlus_GraphicsDrawRect($hGraphic,$xy,$xy,$iWidth-$PenWidth,$iHeight-$PenWidth,$hPenDunkel)
_GDIPlus_GraphicsFillRect($hGraphic,$xy,$xy,$iWidth-$PenWidth,$iHeight-$PenWidth,$hBrushHell)
_GDIPlus_GraphicsDrawRect($hGraphic,$iWidth/2-$WindowWidth/2,$iHeight/2-$WindowHeight/2,$WindowWidth,$TitelHeight,$hPenDunkel)
_GDIPlus_GraphicsFillRect($hGraphic,$iWidth/2-$WindowWidth/2,$iHeight/2-$WindowHeight/2,$WindowWidth,$TitelHeight,$hBrushMittel)
_GDIPlus_GraphicsDrawStringEx($hGraphic, "Bitte Code eingeben zum entsperren des Fensters", $hFont, $tLayout, $hFormat, $hBrushDunkel)
_GDIPlus_GraphicsDrawRect($hGraphic,$iWidth/2-$WindowWidth/2,$iHeight/2-$WindowHeight/2+$TitelHeight,$WindowWidth,$WindowHeight-$TitelHeight,$hPenDunkel)
_GDIPlus_GraphicsFillRect($hGraphic,$iWidth/2-$WindowWidth/2,$iHeight/2-$WindowHeight/2+$TitelHeight,$WindowWidth,$WindowHeight-$TitelHeight,$hBrushMittel)
$e=0
For $i=0 To 10
$extra=0
$txt=$i
$Plus=$BigAbstand*2+50
$x=$iWidth/2-$WindowWidth/2+$BigAbstand+$PenWidth+$Plus
$y=$iHeight/2-$WindowHeight/2+$BigAbstand+$PenWidth+$TitelHeight
If $x-$Plus+$Plus*$i+50>$iWidth/2-$WindowWidth/2+$WindowWidth Then
$x=$x-$Plus+$Plus*$e
$e=$e+1
$y=$y+50+$BigAbstand*2
Else
If $e<>0 Then
$x=$x-$Plus+$Plus*$e
$y=$y+50+$BigAbstand*2
Else
$x=$x-$Plus+$Plus*$i
EndIf
EndIf
_GDIPlus_GraphicsDrawRect($hGraphic,$x,$y,50,50,$hPenDunkel)
_GDIPlus_GraphicsFillRect($hGraphic,$x,$y,50,50,$hBrushHell)
If $i=10 Then
$txt="OK"
$extra=$BigAbstand*3
EndIf
$ZifferFormat[$i]=_GDIPlus_RectFCreate($x+$BigAbstand+$PenWidth-$extra,$y+$BigAbstand-2+$PenWidth)
_GDIPlus_GraphicsDrawStringEX($hGraphic, $txt, $ZifferFont, $ZifferFormat[$i], $hFormat, $hBrushDunkel)
Next
EndFunc
Func _Exit()
_GDIPlus_FontDispose($hFont)
_GDIPlus_FontFamilyDispose($hFamily)
_GDIPlus_StringFormatDispose($hFormat)
For $i=0 To 9
_GDIPlus_StringFormatDispose($ZifferFormat[$i])
Next
_GDIPlus_BrushDispose($hBrushDunkel)
_GDIPlus_BrushDispose($hBrushMittel)
_GDIPlus_BrushDispose($hBrushHell)
_GDIPlus_PenDispose($hPenDunkel)
_GDIPlus_PenDispose($hPenMittel)
_GDIPlus_PenDispose($hPenHell)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
EndFunc
(Skript ist noch nicht fertig)
MfG AntiSpeed