okay... ich komm da nicht wirklich mit in "diesem" tutorial ... dacht vielleicht gibts was langsameres
Problem mit Gui
-
- [ gelöst ]
-
descent -
19. Mai 2010 um 16:33 -
Geschlossen -
Erledigt
-
-
Sieht schwerer aus, als es ist
-
Du kannst ganz einfach Bilder darstellen, diese müssen nicht mal Transparent sein.
Was über den Rand steht wird automatisch abgeschnitten.Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#Include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]
Opt('GUIOnEventMode', 1)Global $hGui = GUICreate("Form1", 480, 250, -1, -1, $WS_POPUP)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GuiCtrlCreatePic(@ScriptDir & "\Hintergrund.bmp", 0, 0, 480, 250)
GuiCtrlSetState(-1,$GUI_DISABLE)
_Close()GUICtrlCreateLabel('X', 140, 50, 20, 20)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetOnEvent(-1, '_End')
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)GUICtrlCreateLabel('O', 125, 50, 15, 20)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetOnEvent(-1, '_Open')
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)GUICtrlCreateLabel('<-', 440, 25, 25, 20)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetOnEvent(-1, '_Close')
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)GUISetState()
[/autoit] [autoit][/autoit] [autoit]
While Sleep(200)
WEndFunc _End()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc _Open()
[/autoit] [autoit][/autoit] [autoit]
Local $hRgn1, $hRgn2
$hRgn1 = _WinAPI_CreateRoundRectRgn(5, 30, 190 + 5, 190 + 30, 190, 190)
$hRgn2 = _WinAPI_CreateRectRgn(120, 20, 350 + 120, 210 + 20)
_WinAPI_CombineRgn($hRgn1, $hRgn1, $hRgn2, $RGN_OR)
_WinAPI_SetWindowRgn($hGui, $hRgn1)
EndFuncFunc _Close()
[/autoit]
Local $hRgn = _WinAPI_CreateRoundRectRgn(5, 30, 190 + 5, 190 + 30, 190, 190)
_WinAPI_SetWindowRgn($hGui, $hRgn)
EndFunc -
Sieht sehr gut aus. Habe leider keine Zeit mir das Script jetzt genauer anzuschauen, da ich morgen meine erste Prüfung schreibe. Sobald ich Zeit gefunden habe und noch Fragen habe bzw. etwas nicht funktioniert, werde ich mich wieder melden.
Ich danke dir vielmals
-
Hier nochmal ein bissl anders.
Spoiler anzeigen
[autoit]#Include <WinAPI.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]
Opt('GUIOnEventMode', 1)Global $hGui = GUICreate("Form1", 480, 250, -1, -1, $WS_POPUP)
[/autoit] [autoit][/autoit] [autoit]
Global $hRgn = _WinAPI_CreateRoundRectRgn(5, 30, 190 + 5, 190 + 30, 190, 190)
_WinAPI_SetWindowRgn($hGui, $hRgn)GUICtrlCreateLabel('X', 140, 50, 20, 20)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetOnEvent(-1, '_End')GUICtrlCreateLabel('->', 125, 50, 15, 20)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetOnEvent(-1, '_Open')GUICtrlCreateLabel('<-', 440, 25, 25, 20)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetOnEvent(-1, '_Close')GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc _End()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc _Open()
[/autoit] [autoit][/autoit] [autoit]
Local $hRgn1, $hRgn2
For $i = 120 To 470 Step 10
$hRgn1 = _WinAPI_CreateRoundRectRgn(5, 30, 195, 220, 190, 190)
$hRgn2 = _WinAPI_CreateRectRgn(120, 20, $i, 230)
_WinAPI_CombineRgn($hRgn1, $hRgn1, $hRgn2, $RGN_OR)
_WinAPI_SetWindowRgn($hGui, $hRgn1)
;Sleep(5)
Next
EndFuncFunc _Close()
[/autoit]
Local $hRgn1, $hRgn2
For $i = 470 To 120 Step - 10
$hRgn1 = _WinAPI_CreateRoundRectRgn(5, 30, 195, 220, 190, 190)
$hRgn2 = _WinAPI_CreateRectRgn(120, 20, $i, 230)
_WinAPI_CombineRgn($hRgn1, $hRgn1, $hRgn2, $RGN_OR)
_WinAPI_SetWindowRgn($hGui, $hRgn1)
;Sleep(5)
Next
$hRgn1 = _WinAPI_CreateRoundRectRgn(5, 30, 190 + 5, 190 + 30, 190, 190)
_WinAPI_SetWindowRgn($hGui, $hRgn)
EndFunc -
Ich habe nun versucht, dass Script mit den WinAPI-Befehlen zu verstehen. Was jede einzelne dieser Befehle bewirkt, glaub ich verstanden zu haben. Jedoch gelang es mir auch mittels der Hilfe sowie SuFu nicht, die Werte für beispielsweise _WinAPI_CreateRoundRectRgn festzulegen.
Kann mir vllt jemand erläutern, wie die einzelnen Zahlen zustande kommen und weshalb bei manchen ein + angehängt wird?
[autoit]_WinAPI_CreateRoundRectRgn(5, 30, 190 + 5, 190 + 30, 190, 190)
[/autoit]Ich schaffe es einfach nicht, das Script auf eine andere Hintergrunddatei mit einem anderen Kreisradius anzupassen.
-
Du kannst es auch so schreiben.
[autoit]_WinAPI_CreateRoundRectRgn(5, 30, 195, 220, 190, 190)
[/autoit]Also in meiner Hilfe steht die Funktion halt unter WinAPI. Aber hier nochmal ein Auszug:
Code
Alles anzeigenErzeugt eine rechteckige Region mit abgerundeten Ecken #Include <WinAPI.au3> _WinAPI_CreateRoundRectRgn($iLeftRect, $iTopRect, $iRightRect, $iBottomRect, $iWidthEllipse, $iHeightEllipse) Parameter $iLeftRect X-Koordinate der oberen linken Ecke der Region $iTopRect Y-Koordinate der oberen linken Ecke der Region $iRightRect X-Koordinate der unteren rechten Ecke der Region $iBottomRect Y-Koordinate der unteren rechten Ecke der Region $iWidthEllipse Breite der Ellipse die zum erstellen der abgerundeten Ecken verwendet wird $iHeightEllipse Höhe der Ellipse die zum erstellen der abgerundeten Ecken verwendet wird Rückgabewert Erfolg: Gibt das Handle der Region zurück Fehler: 0 Bemerkungen Wenn man das HRGN Objekt nicht mehr benötigt, muss die _WinAPI_DeleteObject Funktion aufgerufen werden, um es zu löschen. Bereichskoordinaten werden als 27-bit signierte Integer dargestellt.
-