Hallo,
ich habe ein Problem mit meinem GDIPlus 7-Segment-Anzeigen-Script:
Ich habe mehrere Funktionen in dem Script, mit denen ich einen 7-Segment-Anzeige erstellen möchte. Ich habe 2 Anzeigen in dem Script, welche die Sekunden der aktuellen Uhrzeit anzeigen sollen. Das klappt auch schon ganz gut, nur wird bei der 2. Anzeige das unterste Segment ger nicht angezeigt
und bei der 1. nur manchmal
, ich kann mir das nicht erklären
! Vielleicht könnt ihr euch das Script mal ansehen.
Spoiler anzeigen
#include <GuiConstantsEx.au3>
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
HotKeySet("{ESC}", "_Ende")
[/autoit] [autoit][/autoit] [autoit]Global $hGUI, $hWnd, $hGraphic, $aPoints1[7][2], $aPoints4[7][2]
[/autoit] [autoit][/autoit] [autoit]$hGUI = GUICreate("GDI+ 7Segment-Anzeige", 700, 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)
;Segmente erstellen
$a = _Show(20, 20, 00)
Sleep(100)
$b = _Show(115, 20, 00)
;Ende Segmente
Sleep(100)
While 1
$s1 = StringLeft(@SEC, 1)
$s2 = StringRight(@SEC, 1)
Switch $s1
Case 0
_Show(20, 20, 00)
_Show(20, 20, 0)
Case 1
_Show(20, 20, 00)
_Show(20, 20, 1)
Case 2
_Show(20, 20, 00)
_Show(20, 20, 2)
Case 3
_Show(20, 20, 00)
_Show(20, 20, 3)
Case 4
_Show(20, 20, 00)
_Show(20, 20, 4)
Case 5
_Show(20, 20, 00)
_Show(20, 20, 5)
Case 6
_Show(20, 20, 00)
_Show(20, 20, 6)
Case 7
_Show(20, 20, 00)
_Show(20, 20, 7)
Case 8
_Show(20, 20, 00)
_Show(20, 20, ![]()
Case 9
_Show(20, 20, 00)
_Show(20, 20, 9)
EndSwitch
Switch $s2
Case 0
_Show(115, 20, 00)
_Show(115, 20, 0)
Case 1
_Show(115, 20, 00)
_Show(115, 20, 1)
Case 2
_Show(115, 20, 00)
_Show(115, 20, 2)
Case 3
_Show(115, 20, 00)
_Show(115, 20, 3)
Case 4
_Show(115, 20, 00)
_Show(115, 20, 4)
Case 5
_Show(115, 20, 00)
_Show(115, 20, 5)
Case 6
_Show(115, 20, 00)
_Show(115, 20, 6)
Case 7
_Show(115, 20, 00)
_Show(115, 20, 7)
Case 8
_Show(115, 20, 00)
_Show(115, 20, ![]()
Case 9
_Show(115, 20, 00)
_Show(115, 20, 9)
EndSwitch
Sleep(1000)
WEnd
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
Func _Ende()
_GDIPlus_PenDispose($hPen1)
_GDIPlus_PenDispose($hPen2)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>_Ende
Func _Show($x1, $y1, $Zahl = 00)
_horizontal($x1, $y1);$x = 20, $y = 20
_horizontal($x1, $y1 + 63)
_horizontal($y1, $y1 + 127); Das bei der zweiten Anzeige nicht angezeigt
_vertikal($x1 - 3, $y1)
_vertikal($x1 - 3, $y1 + 66)
_vertikal($x1 + 62, $y1)
_vertikal($x1 + 62, $y1 + 63)
Switch $Zahl
Case 1
_vertikal($x1 + 62, $y1, 0xFFFF0000)
_vertikal($x1 + 62, $y1 + 63, 0xFFFF0000)
Case 2
_horizontal($x1, $y1, 0xFFFF0000)
_horizontal($x1, $y1 + 63, 0xFFFF0000)
_horizontal($y1, $y1 + 127, 0xFFFF0000); Das wird nicht angezeigt
_vertikal($x1 - 3, $y1+ 66, 0xFFFF0000)
_vertikal($x1 + 62, $y1, 0xFFFF0000)
Case 3
_horizontal($x1, $y1, 0xFFFF0000)
_horizontal($x1, $y1 + 63, 0xFFFF0000)
_horizontal($y1, $y1 + 127, 0xFFFF0000); Das wird nicht angezeigt
_vertikal($x1 + 62, $y1, 0xFFFF0000)
_vertikal($x1 + 62, $y1 + 63, 0xFFFF0000)
Case 4
_horizontal($x1, $y1 + 63, 0xFFFF0000)
_vertikal($x1 - 3, $y1, 0xFFFF0000)
_vertikal($x1 + 62, $y1, 0xFFFF0000)
_vertikal($x1 + 62, $y1 + 63, 0xFFFF0000)
Case 5
_horizontal($x1, $y1, 0xFFFF0000)
_horizontal($x1, $y1 + 63, 0xFFFF0000)
_horizontal($y1, $y1 + 127, 0xFFFF0000); Das wird nicht angezeigt
_vertikal($x1 - 3, $y1, 0xFFFF0000)
_vertikal($x1 + 62, $y1 + 63, 0xFFFF0000)
Case 6
_horizontal($x1, $y1, 0xFFFF0000)
_horizontal($x1, $y1 + 63, 0xFFFF0000)
_horizontal($y1, $y1 + 127, 0xFFFF0000); Das wird nicht angezeigt
_vertikal($x1 - 3, $y1, 0xFFFF0000)
_vertikal($x1 - 3, $y1 + 66, 0xFFFF0000)
_vertikal($x1 + 62, $y1 + 63, 0xFFFF0000)
Case 7
_horizontal($x1, $y1, 0xFFFF0000)
_vertikal($x1 + 62, $y1, 0xFFFF0000)
_vertikal($x1 + 62, $y1 + 63, 0xFFFF0000)
Case 8
_horizontal($x1, $y1, 0xFFFF0000)
_horizontal($x1, $y1 + 63, 0xFFFF0000)
_horizontal($y1, $y1 + 127, 0xFFFF0000); Das wird nicht angezeigt
_vertikal($x1 - 3, $y1, 0xFFFF0000)
_vertikal($x1 - 3, $y1 + 66, 0xFFFF0000)
_vertikal($x1 + 62, $y1, 0xFFFF0000)
_vertikal($x1 + 62, $y1 + 63, 0xFFFF0000)
Case 9
_horizontal($x1, $y1, 0xFFFF0000)
_horizontal($x1, $y1 + 63, 0xFFFF0000)
_horizontal($y1, $y1 + 127, 0xFFFF0000); Das wird nicht angezeigt
_vertikal($x1 - 3, $y1, 0xFFFF0000)
_vertikal($x1 + 62, $y1, 0xFFFF0000)
_vertikal($x1 + 62, $y1 + 63, 0xFFFF0000)
Case 0
_horizontal($x1, $y1, 0xFFFF0000)
_horizontal($y1, $y1 + 127, 0xFFFF0000)
_vertikal($x1 - 3, $y1, 0xFFFF0000)
_vertikal($x1 - 3, $y1 + 66, 0xFFFF0000)
_vertikal($x1 + 62, $y1, 0xFFFF0000)
_vertikal($x1 + 62, $y1 + 63, 0xFFFF0000)
Case 00
_horizontal($x1, $y1)
_horizontal($x1, $y1 + 63)
_horizontal($y1, $y1 + 127); Das wird nicht angezeigt
_vertikal($x1 - 3, $y1)
_vertikal($x1 - 3, $y1 + 66)
_vertikal($x1 + 62, $y1)
_vertikal($x1 + 62, $y1 + 63)
EndSwitch
EndFunc ;==>_Show