Hallo,
als kleine GDIPlus-Übung habe ich mal ein Programm geschrieben, das per GDIPlus 'ne 7-Segment-Anzeige erstellt, hat viel Arbeit gemacht. Daraus möchte ich dann eine Digitaluhr erstellen. Über Kommentare oder Kritik würde ich mich freuen!
Hier das Script:
Spoiler anzeigen
;================================================
;Scripted by xp_fan
;================================================
#include <GuiConstantsEx.au3>
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $hGUI, $hWnd, $hGraphic, $aPoints1[7][2], $aPoints2[7][2], $aPoints3[7][2], $aPoints4[7][2], $aPoints5[7][2], $aPoints6[7][2], $aPoints7[7][2], $Radio[10]
[/autoit] [autoit][/autoit] [autoit]$hGUI = GUICreate("GDI+ 7Segment-Anzeige", 230, 190)
$hWnd = WinGetHandle("GDI+ 7Segment-Anzeige")
GUISetState()
_GDIPlus_Startup()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
$hPen1 = _GDIPlus_PenCreate(0xFFCFCFCF)
$hPen2 = _GDIPlus_BrushCreateSolid(0xFFFF0000)
$hPen3 = _GDIPlus_BrushCreateSolid(0xFFCFCFCF)
;Segment erstellen
_horizontal(20, 20)
_horizontal(20, 83)
_horizontal(20, 147)
_vertikal(17, 20)
_vertikal(17, 86)
_vertikal(82, 20)
_vertikal(82, 83)
;Ende Segment
For $i = 1 To 5
$Radio[$i] = GUICtrlCreateRadio($i, 130, 20 * $i)
Next
$Radio[6] = GUICtrlCreateRadio("6", 160, 20)
$Radio[7] = GUICtrlCreateRadio("7", 160, 40)
$Radio[8] = GUICtrlCreateRadio("8", 160, 60)
$Radio[9] = GUICtrlCreateRadio("9", 160, 80)
$Radio[0] = GUICtrlCreateRadio("0", 160, 100)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
_GDIPlus_PenDispose($hPen1)
_GDIPlus_PenDispose($hPen2)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
Exit
Case $Radio[0]
_Black1()
_horizontal(20, 20, 0xFFFF0000)
_horizontal(20, 147, 0xFFFF0000)
_vertikal(17, 20, 0xFFFF0000)
_vertikal(17, 86, 0xFFFF0000)
_vertikal(82, 20, 0xFFFF0000)
_vertikal(82, 83, 0xFFFF0000)
Case $Radio[1]
_Black1()
_vertikal(82, 20, 0xFFFF0000)
_vertikal(82, 83, 0xFFFF0000)
Case $Radio[2]
_Black1()
_horizontal(20, 20, 0xFFFF0000)
_horizontal(20, 83, 0xFFFF0000)
_horizontal(20, 147, 0xFFFF0000)
_vertikal(17, 86, 0xFFFF0000)
_vertikal(82, 20, 0xFFFF0000)
Case $Radio[3]
_Black1()
_horizontal(20, 20, 0xFFFF0000)
_horizontal(20, 83, 0xFFFF0000)
_horizontal(20, 147, 0xFFFF0000)
_vertikal(82, 20, 0xFFFF0000)
_vertikal(82, 83, 0xFFFF0000)
Case $Radio[4]
_Black1()
_horizontal(20, 83, 0xFFFF0000)
_vertikal(17, 20, 0xFFFF0000)
_vertikal(82, 20, 0xFFFF0000)
_vertikal(82, 83, 0xFFFF0000)
Case $Radio[5]
_Black1()
_horizontal(20, 20, 0xFFFF0000)
_horizontal(20, 83, 0xFFFF0000)
_horizontal(20, 147, 0xFFFF0000)
_vertikal(17, 20, 0xFFFF0000)
_vertikal(82, 83, 0xFFFF0000)
Case $Radio[6]
_Black1()
_horizontal(20, 20, 0xFFFF0000)
_horizontal(20, 83, 0xFFFF0000)
_horizontal(20, 147, 0xFFFF0000)
_vertikal(17, 20, 0xFFFF0000)
_vertikal(17, 86, 0xFFFF0000)
_vertikal(82, 83, 0xFFFF0000)
Case $Radio[7]
_Black1()
_horizontal(20, 20, 0xFFFF0000)
_vertikal(82, 20, 0xFFFF0000)
_vertikal(82, 83, 0xFFFF0000)
Case $Radio[8]
_Black1()
_horizontal(20, 20, 0xFFFF0000)
_horizontal(20, 83, 0xFFFF0000)
_horizontal(20, 147, 0xFFFF0000)
_vertikal(17, 20, 0xFFFF0000)
_vertikal(17, 86, 0xFFFF0000)
_vertikal(82, 20, 0xFFFF0000)
_vertikal(82, 83, 0xFFFF0000)
Case $Radio[9]
_Black1()
_horizontal(20, 20, 0xFFFF0000)
_horizontal(20, 83, 0xFFFF0000)
_horizontal(20, 147, 0xFFFF0000)
_vertikal(17, 20, 0xFFFF0000)
_vertikal(82, 20, 0xFFFF0000)
_vertikal(82, 83, 0xFFFF0000)
EndSwitch
WEnd
Func _Black1()
_horizontal(20, 20, 0xFFCFCFCF)
_horizontal(20, 83, 0xFFCFCFCF)
_horizontal(20, 147, 0xFFCFCFCF)
_vertikal(17, 20, 0xFFCFCFCF)
_vertikal(17, 86, 0xFFCFCFCF)
_vertikal(82, 20, 0xFFCFCFCF)
_vertikal(82, 83, 0xFFCFCFCF)
EndFunc ;==>_Black
Func _horizontal($x, $y, $c = 0xFFCFCFCF, $r = 0xFFCFCFCF)
$Posx1 = $x
$Posy1 = $y
$aPoints1[0][0] = 6
$aPoints1[1][0] = $Posx1;10
$aPoints1[1][1] = $Posy1;200
$aPoints1[2][0] = $Posx1 + 10;20
$aPoints1[2][1] = $Posy1 - 5;195
$aPoints1[6][0] = $Posx1 + 10;20
$aPoints1[6][1] = $Posy1 + 5;205
$aPoints1[3][0] = $Posx1 + 50;60
$aPoints1[3][1] = $Posy1 - 5;195
$aPoints1[5][0] = $Posx1 + 50;60
$aPoints1[5][1] = $Posy1 + 5;205
$aPoints1[4][0] = $Posx1 + 60;70
$aPoints1[4][1] = $Posy1;200
$hPen1 = _GDIPlus_PenCreate($r)
$hPen3 = _GDIPlus_BrushCreateSolid($c)
_GDIPlus_GraphicsDrawPolygon($hGraphic, $aPoints1, $hPen1)
_GDIPlus_GraphicsFillPolygon($hGraphic, $aPoints1, $hPen3)
EndFunc ;==>_horizontal
Func _vertikal($x, $y, $c = 0xFFCFCFCF, $r = 0xFFCFCFCF)
$Posx4 = $x
$Posy4 = $y
$aPoints4[0][0] = 6
$aPoints4[1][0] = $Posx4
$aPoints4[1][1] = $Posy4
$aPoints4[2][0] = $Posx4 + 5;25
$aPoints4[2][1] = $Posy4 + 10;30
$aPoints4[3][0] = $Posx4 + 5;25
$aPoints4[3][1] = $Posy4 + 50;80
$aPoints4[4][0] = $Posx4 ;20
$aPoints4[4][1] = $Posy4 + 60;90
$aPoints4[5][0] = $Posx4 - 5;15
$aPoints4[5][1] = $Posy4 + 50;80
$aPoints4[6][0] = $Posx4 - 5;15
$aPoints4[6][1] = $Posy4 + 10;30
$hPen1 = _GDIPlus_PenCreate($r)
$hPen3 = _GDIPlus_BrushCreateSolid($c)
_GDIPlus_GraphicsDrawPolygon($hGraphic, $aPoints4, $hPen1)
_GDIPlus_GraphicsFillPolygon($hGraphic, $aPoints4, $hPen3)
EndFunc ;==>_vertikal