PNG in GUI einbauen

  • Also ich weiß, ich hab ein verdammt banales Problem, bei dem sich einige von euch sicher die Hände über der Kopf schlagen werden!
    Ich bin einfach aus der Übung mit AutoIt und muss auf die schnelle ein kleines Programm für jemanden schreiben ...

    Ich will einfach ne GUI erstellen, in der ich das PNG-Bild frei platzieren und die Größe ändern kann!
    So geht es ja leider bei AutoIt nicht für png-Grafiken: "GUICtrlCreatePic($png_bild, 8, 40, 513, 377)"

    Ich hab mal was aus der Hilfe, so weit ich es kann, an meine Wünsche angepasst:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #Include <WinAPI.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $hGUI, $hImage, $hGraphic, $hImage
    $bild = "Crys1.png"

    [/autoit] [autoit][/autoit] [autoit]

    ; Create GUI
    $hGUI = GUICreate("Show PNG", 250, 250)

    [/autoit] [autoit][/autoit] [autoit]

    ; Load PNG image
    _GDIPlus_StartUp()
    $hImage = _GDIPlus_ImageLoadFromFile($bild)
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $Label1 = GUICtrlCreateLabel("PNG Bild:", 8, 8, 50, 17)

    [/autoit] [autoit][/autoit] [autoit]

    GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    ; Loop until user exits
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ; Draw PNG image
    Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
    _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ; Clean up resources
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_ShutDown()

    [/autoit]


    Wie mach ich es, das ich das Bild frei platzieren und die Größe ändern kann?

    Ist der 'Clean up resources' Teil nötig?

    thx

  • Dank dir!
    So weit so gut ... komm aber nicht wirklich weiter ...

    Wie schaffe ich es mehrere PNG-Bilder einzubauen?
    (alle Bilder haben unterschiedliche Namen, Pfade und werden wo anders hin platziert!)

    So geht es nicht:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #Include <WinAPI.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $bild1 = "Crys1.png"
    FileInstall($bild1, @TempDir&"\"&$bild1)
    $pfad_bild1 = @TempDir&"\"&$bild1

    [/autoit] [autoit][/autoit] [autoit]

    $bild2 = "Crys2.png"
    FileInstall($bild2, @TempDir&"\"&$bild2)
    $pfad_bild2 = @TempDir&"\"&$bild2

    [/autoit] [autoit][/autoit] [autoit]

    $gui = GUICreate("PNG Bild", 539, 429, 192, 124)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_StartUp()
    $handle_bild1 = _GDIPlus_ImageLoadFromFile($pfad_bild1)
    $gui_grafik = _GDIPlus_GraphicsCreateFromHWND($gui)
    GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT1")

    [/autoit] [autoit][/autoit] [autoit]

    $handle_bild2 = _GDIPlus_ImageLoadFromFile($pfad_bild2)
    $gui_grafik = _GDIPlus_GraphicsCreateFromHWND($gui)
    GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT2")

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    ; Loop until user exits
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ; Draw PNG image
    Func MY_WM_PAINT1($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($gui, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($gui_grafik, $handle_bild1, 10, 10)
    _WinAPI_RedrawWindow($gui, 0, 0, $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ; Draw PNG image
    Func MY_WM_PAINT2($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($gui, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($gui_grafik, $handle_bild2, 50, 50)
    _WinAPI_RedrawWindow($gui, 0, 0, $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDispose($gui_grafik)
    _GDIPlus_ImageDispose($handle_bild1)
    _GDIPlus_ImageDispose($handle_bild2)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_ShutDown()

    [/autoit]
    • Offizieller Beitrag

    Versuche mal zu verstehen, was dort passiert. WM_PAINT ist eine Windowsnachricht, die man natürlich nur mit einer Funktion verknüpfen kann.
    Du mußt für beide Bilder ein Imagehandle erstellen und brauchst in der Func MY_WM_PAINT nur eine Zeile hinzufügen:
    _GDIPlus_GraphicsDrawImage($gui_grafik, $handle_bild2, 50, 50)

  • Wenn ich im Visual Studio mit c# arbeite, geht mir die GUI wirklich leichter von der Hand ^^


    Noch mal ne Frage:
    Wie kann ich eingebunden Bilder nun verstecken, ala "GuiCtrlSetState($png_grafik, $GUI_HIDE)"?

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #Include <WinAPI.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; Allgemeine Variablen
    ; ...
    $titel_hash = "test_me_0232"

    [/autoit] [autoit][/autoit] [autoit]

    ; ### Start der GUI Eigenschaften ###
    $GUI = GUICreate("AutoCDaufHDD", 401, 411, 385, 322)

    [/autoit] [autoit][/autoit] [autoit]

    ; Impressum
    DirCreate (@TempDir&"\"&$titel_hash)
    $pfad_bild1 = @TempDir&"\"&$titel_hash&"\logo1.png"
    FileInstall("logo1.png", $pfad_bild1, 1)
    $pfad_bild2 = @TempDir&"\"&$titel_hash&"\logo2.png"
    FileInstall("logo2.png", $pfad_bild2, 1)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_StartUp()
    $handle_bild1 = _GDIPlus_ImageLoadFromFile($pfad_bild1)
    $handle_bild2 = _GDIPlus_ImageLoadFromFile($pfad_bild2)
    $GUI_grafik = _GDIPlus_GraphicsCreateFromHWND($GUI)
    $x = GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
    GuiCtrlSetState($WM_PAINT, $GUI_HIDE)

    [/autoit] [autoit][/autoit] [autoit]

    ; ...

    [/autoit] [autoit][/autoit] [autoit]

    ; Knöpfe unten
    $Button2 = GUICtrlCreateButton("Abbrechen", 7, 370, 153, 30)
    $Button3 = GUICtrlCreateButton("Info/Hilfe", 165, 370, 80, 30)
    $Button4 = GUICtrlCreateButton("Zurück!", 165, 370, 80, 30)
    GuiCtrlSetState($Button4, $GUI_HIDE)
    $Button1 = GUICtrlCreateButton("Kopieren starten!", 248, 370, 145, 30)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    ; ### Start der GUI-Anzeige ###
    While 1
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    ; Wenn man Impressum klickt
    Case $Button3
    ; ...
    GuiCtrlSetState($Button4, $GUI_SHOW)
    GuiCtrlSetState($Button3, $GUI_HIDE)
    ; Wenn man Zurück im Impressum klickt
    Case $Button4
    ; ...
    GuiCtrlSetState($Button4, $GUI_HIDE)
    GuiCtrlSetState($Button3, $GUI_SHOW)
    ; Wenn man Kopieren klickt
    Case $Button1
    ExitLoop
    ; Wenn man Abbrechen klickt
    Case $Button2
    crys_ende()
    Exit
    ; Wenn man X klickt
    Case $GUI_EVENT_CLOSE
    crys_ende()
    Exit
    EndSwitch
    WEnd

    ; ### Start der kopiert Befehle ###
    ; ...

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($gui, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($gui_grafik, $handle_bild1, 10, 10)
    _GDIPlus_GraphicsDrawImage($gui_grafik, $handle_bild2, 50, 50)
    _WinAPI_RedrawWindow($gui, 0, 0, $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func crys_ende()
    ; Freigeben der Ressourcen
    _GDIPlus_GraphicsDispose($gui_grafik)
    _GDIPlus_ImageDispose($handle_bild1)
    _GDIPlus_ImageDispose($handle_bild2)
    _GDIPlus_ShutDown()
    ; Löschen der Temp.-Dateien
    DirRemove(@TempDir&"\"&$titel_hash, 1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ; ### ENDE ###

    [/autoit]


    Ich möchte zwischen zwei Seiten hin und her springen und nur auf einer Seite der PNGs haben ...

  • Einfach mal mit

    [autoit]

    _GDIPlus_GraphicsClear($hGraphic)

    [/autoit]

    die Graphik säubern.

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

  • Ich benutze auch KODA, allerdings nur für die grafische Gestaltung und das Feststellen der genauen Koordinaten, vor der Erstellung der ersten Programm-Zeile. So geht das viel schneller und man hat sofort den genauen optischen Eindruck, wie die GUI dann später aussehen soll.

    Wenn meine Oberfläche dann in KODA fertig ist, bastel ich die Koordinaten dann manuell in die au3, weil ich da viel besser mit arbeiten kann, als wenn ich den kompletten KODA-Krempel einfach per C&P einbaue.
    Ausserdem lernt man da viel mehr bei.

    Zur Unterstützung finde ich KODA sehr gut...

    Gruß
    Pitter

  • @ H2112:
    Danke! Ich glaub jetzt versteh ich das Konzept langsam ^^


    KODA kenne und verwende ich auch, aber es ist nicht so übersichtlich oder vielseitig wie das Virtual Studio ... aber will ich auch gar nicht vergleichen, dass ist einfach eine andere Liga!


    Noch ein Problem:
    Wenn ich die Grafik, wie oben beschrieben, verschwinden lasse, dann bleibt dennoch ein Rückstand dieser Grafik übrig!
    Es wird alles gelöscht, wo sich auf der nächsten Seite (Räumlich) eine eine Gruppe befindet! Zwischen den Gruppen bleibt die Grafik bestehen!
    Wieso das? Wie kann ich das beheben?

    Und wenn ich eine PNG-Grafik mit Alpha-Werten (halb transparent) habe, dann werden diese Grafiken so oft geladen (so scheint es zumindest), dass diese Alpha-Werte nicht mehr gut aussehen ... dass die Alpha-Werte nicht mehr Transparent sind!
    Was kann ich dagegen unternehmen?

    thx

  • Hier noch mal eine offenen Fragen, mit Bilder dazu:


    Wenn ich die Grafik, wie oben beschrieben, verschwinden lasse, dann bleibt dennoch ein Rückstand dieser Grafik übrig!
    Es wird alles gelöscht, wo sich auf der nächsten Seite (Räumlich) eine eine Gruppe befindet! Zwischen den Gruppen bleibt die Grafik bestehen!
    Wieso das? Wie kann ich das beheben?


    [Blockierte Grafik: http://saved.im/mtcxmdq5dwhl_vs/autoit2.jpg]
    Zusehen unter der Gruppe 'Quelle'!

    Und wenn ich eine PNG-Grafik mit Alpha-Werten (halb transparent) habe, dann werden diese Grafiken so oft geladen (so scheint es zumindest), dass diese Alpha-Werte nicht mehr gut aussehen ... dass die Alpha-Werte nicht mehr Transparent sind!
    Was kann ich dagegen unternehmen?


    [Blockierte Grafik: http://saved.im/mtcxmdq4ymn4_vs/autoit1.jpg]
    Das "CK"-Logo sollte eigentlich so wie in meinen Avatar aussehen! Die PNG-Datei ist die selbe!

    Und hier der aktuelle Quelltext:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #Include <WinAPI.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; Allgemeine Variablen
    $version = "v0.4.1 _ 18.04.2010"
    $titel = "AutoCDaufHDD"
    ; ...

    [/autoit] [autoit][/autoit] [autoit]

    ; ### Start der GUI Eigenschaften ###
    $GUI = GUICreate("AutoCDaufHDD", 401, 411, -1, -1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Quelle
    $Group1 = GUICtrlCreateGroup("Quelle:", 8, 5, 385, 50)
    $quelle = GUICtrlCreateInput("", 16, 21, 369, 21)

    [/autoit] [autoit][/autoit] [autoit]

    ; Ziel
    $Group2 = GUICtrlCreateGroup("Ziel:", 8, 60, 385, 140)
    $ziel = GUICtrlCreateInput("", 16, 76, 369, 21)
    $sub = GUICtrlCreateCheckbox("Soll ein Unterordner je CD angelegt werden?", 16, 100, 329, 25)
    $sub_datum = GUICtrlCreateCheckbox("Mit Datum und Uhrzeit?", 28, 125, 233, 25)
    $bar = GUICtrlCreateCheckbox("Soll ein Kopier-Fortschrits-Blaken angezeigt werden?", 16, 150, 280, 25)
    $text_bar = GUICtrlCreateLabel("(Nur mit NEIN koennen mehrere Prozesse gleichzeitig ausgefuehrt werden!)", 16, 175, 359, 17)

    [/autoit] [autoit][/autoit] [autoit]

    ; Logbuch
    $Group4 = GUICtrlCreateGroup("Logbuch:", 8, 205, 385, 90)
    $Checkbox1 = GUICtrlCreateCheckbox("Soll ein Logbuch angelegt angelegt werden?", 16, 220, 329, 25)
    $Radio1 = GUICtrlCreateRadio("Als *.log Datei speichern!", 28, 245, 289, 17)
    GuiCtrlSetState($Radio1, $GUI_CHECKED)
    $Radio2 = GUICtrlCreateRadio("Als *.csv Datei speichern!", 28, 260, 289, 25)

    [/autoit] [autoit][/autoit] [autoit]

    ; Status
    $Group3 = GUICtrlCreateGroup("Status:", 8, 300, 385, 60)
    $Nein = GUICtrlCreateLabel("Nein", 216, 324, 30, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xFF0000)
    $Label1 = GUICtrlCreateLabel("Unbekannt", 314, 333, 66, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xC0C0C0)
    $Label2 = GUICtrlCreateLabel("Ja", 334, 310, 17, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x008000)
    $text3 = GUICtrlCreateLabel("Quelle ist vom Typ:", 16, 340, 94, 17)
    $Label3 = GUICtrlCreateLabel("Quelle gefunden?", 16, 320, 88, 17)

    [/autoit] [autoit][/autoit] [autoit]

    ; Knöpfe unten
    $Button2 = GUICtrlCreateButton("Abbrechen", 7, 370, 153, 30)
    $Button3 = GUICtrlCreateButton("Info/Hilfe", 165, 370, 80, 30)
    $Button4 = GUICtrlCreateButton("Zurück!", 165, 370, 80, 30)
    GuiCtrlSetState($Button4, $GUI_HIDE)
    $Button1 = GUICtrlCreateButton("Kopieren starten!", 248, 370, 145, 30)

    [/autoit] [autoit][/autoit] [autoit]

    ; Impressum
    DirCreate (@TempDir&"\"&$titel_hash)
    $pfad_bild1 = @TempDir&"\"&$titel_hash&"\logo1.png"
    FileInstall("logo1.png", $pfad_bild1, 1)
    $pfad_bild2 = @TempDir&"\"&$titel_hash&"\logo2.png"
    FileInstall("logo2.png", $pfad_bild2, 1)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_StartUp()
    $handle_bild1 = _GDIPlus_ImageLoadFromFile($pfad_bild1)
    $handle_bild2 = _GDIPlus_ImageLoadFromFile($pfad_bild2)
    $GUI_grafik = _GDIPlus_GraphicsCreateFromHWND($GUI)

    [/autoit] [autoit][/autoit] [autoit]

    $Label4 = GUICtrlCreateLabel("titel", 208, 8, 20, 17, $SS_CENTER)
    $Label5 = GUICtrlCreateLabel("version", 208, 32, 38, 17, $SS_CENTER)
    $Label6 = GUICtrlCreateLabel("Datum", 208, 56, 35, 17, $SS_CENTER)
    $Label7 = GUICtrlCreateLabel("Autor: Chris ", 208, 80, 104, 17)
    $Label8 = GUICtrlCreateLabel("Freigegeben ...!", 208, 104, 147, 65)
    $Label9 = GUICtrlCreateLabel("Nach einer neuerer Version suchen:", 8, 168, 183, 17)
    $Button5 = GUICtrlCreateButton("Button4", 8, 184, 185, 25)
    $Label10 = GUICtrlCreateLabel("Auf der Seite des Autors schauen:", 6, 234, 165, 17)
    $Button6 = GUICtrlCreateButton("Button4", 6, 250, 185, 25)
    $Label11 = GUICtrlCreateLabel("Kontakt mit dem Autor aufnehmen:", 9, 299, 167, 17)
    $Button7 = GUICtrlCreateButton("Button4", 9, 315, 185, 25)

    [/autoit] [autoit][/autoit] [autoit]

    GuiCtrlSetState($Label4, $GUI_HIDE)
    GuiCtrlSetState($Label5, $GUI_HIDE)
    GuiCtrlSetState($Label6, $GUI_HIDE)
    GuiCtrlSetState($Label7, $GUI_HIDE)
    GuiCtrlSetState($Label8, $GUI_HIDE)
    GuiCtrlSetState($Label9, $GUI_HIDE)
    GuiCtrlSetState($Label10, $GUI_HIDE)
    GuiCtrlSetState($Label11, $GUI_HIDE)
    GuiCtrlSetState($Button5, $GUI_HIDE)
    GuiCtrlSetState($Button6, $GUI_HIDE)
    GuiCtrlSetState($Button7, $GUI_HIDE)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    ; ### Start der GUI-Anzeige ###
    While 1
    While 1
    Switch GUIGetMsg()
    ; Wenn man Impressum klickt
    Case $Button3
    GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
    GuiCtrlSetState($Group1, $GUI_HIDE)
    GuiCtrlSetState($quelle, $GUI_HIDE)
    GuiCtrlSetState($Group2, $GUI_HIDE)
    GuiCtrlSetState($ziel, $GUI_HIDE)
    GuiCtrlSetState($sub, $GUI_HIDE)
    GuiCtrlSetState($sub_datum, $GUI_HIDE)
    GuiCtrlSetState($bar, $GUI_HIDE)
    GuiCtrlSetState($text_bar, $GUI_HIDE)
    GuiCtrlSetState($Group4, $GUI_HIDE)
    GuiCtrlSetState($Checkbox1, $GUI_HIDE)
    GuiCtrlSetState($Radio1, $GUI_HIDE)
    GuiCtrlSetState($Radio2, $GUI_HIDE)
    GuiCtrlSetState($Group3, $GUI_HIDE)
    GuiCtrlSetState($Nein, $GUI_HIDE)
    GuiCtrlSetState($Label1, $GUI_HIDE)
    GuiCtrlSetState($Label2, $GUI_HIDE)
    GuiCtrlSetState($text3, $GUI_HIDE)
    GuiCtrlSetState($Label3, $GUI_HIDE)
    GuiCtrlSetState($Button4, $GUI_SHOW)
    GuiCtrlSetState($Button3, $GUI_HIDE)

    GuiCtrlSetState($Label4, $GUI_SHOW)
    GuiCtrlSetState($Label5, $GUI_SHOW)
    GuiCtrlSetState($Label6, $GUI_SHOW)
    GuiCtrlSetState($Label7, $GUI_SHOW)
    GuiCtrlSetState($Label8, $GUI_SHOW)
    GuiCtrlSetState($Label9, $GUI_SHOW)
    GuiCtrlSetState($Label10, $GUI_SHOW)
    GuiCtrlSetState($Label11, $GUI_SHOW)
    GuiCtrlSetState($Button5, $GUI_SHOW)
    GuiCtrlSetState($Button6, $GUI_SHOW)
    GuiCtrlSetState($Button7, $GUI_SHOW)
    ; Wenn man Zurück im Impressum klickt
    Case $Button4
    GUIRegisterMsg($WM_PAINT, "crys_png_hide")
    GuiCtrlSetState($Group1, $GUI_SHOW)
    GuiCtrlSetState($quelle, $GUI_SHOW)
    GuiCtrlSetState($Group2, $GUI_SHOW)
    GuiCtrlSetState($ziel, $GUI_SHOW)
    GuiCtrlSetState($sub, $GUI_SHOW)
    GuiCtrlSetState($sub_datum, $GUI_SHOW)
    GuiCtrlSetState($bar, $GUI_SHOW)
    GuiCtrlSetState($text_bar, $GUI_SHOW)
    GuiCtrlSetState($Group4, $GUI_SHOW)
    GuiCtrlSetState($Checkbox1, $GUI_SHOW)
    GuiCtrlSetState($Radio1, $GUI_SHOW)
    GuiCtrlSetState($Radio2, $GUI_SHOW)
    GuiCtrlSetState($Group3, $GUI_SHOW)
    GuiCtrlSetState($Nein, $GUI_SHOW)
    GuiCtrlSetState($Label1, $GUI_SHOW)
    GuiCtrlSetState($Label2, $GUI_SHOW)
    GuiCtrlSetState($text3, $GUI_SHOW)
    GuiCtrlSetState($Label3, $GUI_SHOW)
    GuiCtrlSetState($Button4, $GUI_HIDE)
    GuiCtrlSetState($Button3, $GUI_SHOW)

    GuiCtrlSetState($Label4, $GUI_HIDE)
    GuiCtrlSetState($Label5, $GUI_HIDE)
    GuiCtrlSetState($Label6, $GUI_HIDE)
    GuiCtrlSetState($Label7, $GUI_HIDE)
    GuiCtrlSetState($Label8, $GUI_HIDE)
    GuiCtrlSetState($Label9, $GUI_HIDE)
    GuiCtrlSetState($Label10, $GUI_HIDE)
    GuiCtrlSetState($Label11, $GUI_HIDE)
    GuiCtrlSetState($Button5, $GUI_HIDE)
    GuiCtrlSetState($Button6, $GUI_HIDE)
    GuiCtrlSetState($Button7, $GUI_HIDE)
    ; Wenn man Kopieren klickt
    Case $Button1
    ExitLoop
    ; Wenn man Abbrechen klickt
    Case $Button2
    crys_ende()
    Exit
    ; Wenn man X klickt
    Case $GUI_EVENT_CLOSE
    crys_ende()
    Exit
    EndSwitch

    ; ...
    WEnd
    ; ### Start der kopieren Befehle ###
    ; ...

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($gui, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($gui_grafik, $handle_bild1, 10, 10)
    _GDIPlus_GraphicsDrawImage($gui_grafik, $handle_bild2, 200, 250)
    _WinAPI_RedrawWindow($gui, 0, 0, $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func crys_png_hide($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($gui, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsClear($handle_bild1)
    _GDIPlus_GraphicsClear($handle_bild2)
    _WinAPI_RedrawWindow($gui, 0, 0, $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func crys_ende()
    ; Freigeben der Ressourcen
    _GDIPlus_GraphicsDispose($gui_grafik)
    _GDIPlus_ImageDispose($handle_bild1)
    _GDIPlus_ImageDispose($handle_bild2)
    _GDIPlus_ShutDown()

    ; Löschen der Temp.-Dateien
    DirRemove(@TempDir&"\"&$titel_hash, 1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ; ### ENDE ###

    [/autoit]

    Wie löse ich die Probleme?

    thx

  • Das erste Problem habe ich gelöst, in dem ich eine Gruppe hinzugefügt habe, die nur auf der ersten Seite sichtbar ist und größer als das Fenster ist!
    Ist zwar keinen schöne Lösung, aber da ich keinen Hilfe bekommen habe ... tja, es geht ...

    Zum 2ten Probleme:
    Es scheint so, als ob der die Grafik immer und immer wieder lädt, so lang nichts mehr von den Alpha-Werten übrig ist ..
    Wie bekomm ich das hin, das ich auch einen Teiltransparenz darstellen kann?
    Liegt es vielleicht an meiner Datei?
    Helft mir einfach ...