Bilder Mit GDI+

  • Hai Community,


    Mir wahr langweilg und jetzt wollte ich kleines Programm machen, bei dem Seine Laune an gibt und dannach ein Smiley mit der Laune kommt!

    Frage1.

    Hier mal Die Gui zuhr auswalhl der laune:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    Opt("TrayMenuMode", 1)
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Smilez", 171, 191, 210, 201)
    $Radio1 = GUICtrlCreateRadio("Verliebt", 24, 32, 113, 25) ;Hab ich smilie2 verliebt
    $Radio2 = GUICtrlCreateRadio("Glucklich", 24, 56, 113, 25) ;Hab ich smilie glucklich
    $Radio3 = GUICtrlCreateRadio("Geht so", 24, 80, 113, 25) ;Hab ich smilie daneben
    $Radio4 = GUICtrlCreateRadio("Scheise", 24, 104, 113, 25) ;Hab ich smilie skeptisch
    $Radio5 = GUICtrlCreateRadio("Bose", 24, 128, 113, 25) ;Hab ich smilie teufel2
    ;Hab ich smilie2 cool
    $Label1 = GUICtrlCreateLabel("Wie ist ihrer Laune momentan?", 8, 8, 150, 17)
    $Button1 = GUICtrlCreateButton("Weiter", 16, 160, 129, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $Radio1
    GUISetBkColor(0x990299)
    Case $Radio2
    GUISetBkColor(0x009900)
    case $Radio3
    GUISetBkColor(0x000099)
    case $Radio4
    GUISetBkColor(0x003333)
    case $Radio5
    GUISetBkColor(0x990000)
    EndSwitch
    WEnd

    [/autoit]

    Und dann soll eine Gui oder etwas anders mit dem smilez kommen :!: aber wie mach ich dann auf die naechste gui ein Bildmit gdi+ oder lohnt sich es [berhaupt soetwas mit gdi+ zumachen?

    Frage2.

    Also bei downloadern oder so gibst ja oft das wen der Download fertig is unten links so en "ding" erscheint wie heist das und wie mach ich so was


    MFG CF.Gaming

  • zu 1
    gdi+ is für sowas einfaches schon fast zu viel
    kannst auch mit Guictrlcreatepic machen
    aba wennstes trotzdem in gdi+ machen willst helf ich dir gerne

    zu 2
    ich kann mir vorstellen das du einen TrayTip meinst

  • zu.1


    Ja also ich wollte es mit gdi wegen der rahmen funcionin machen usw..Es wa'hre net wen du es mir erklaern koennetst^^


    zu.2


    Ah ok danke

    [autoit]

    traytip

    [/autoit]


    Funkitoniert

  • so fertig
    müsste eigentlich gehen
    wenn nich muss ich mir das nochmal anschaun

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    Opt("TrayMenuMode", 1)
    _GDIPlus_Startup()
    Global $aktuellesBild = $hVerliebt
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Smilez", 350, 191, 210, 201)
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($Form1);Erstellt eine Grafik aus der Gui $Form1 (diese ist sichtbar)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(179, 191, $hGraphics);Erstellt ein Bild(Bitmap) aus der Grafik
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap);Erstellt wieder eine Grafik aus dem Bild, beim zeichnen in diese Grafik wird eigentlich in $hBitmap gezeichnet
    ;somit kann das Bild($hBitmap) später zu einem beliebigen Zeitpunkt auf die Hauptgrafik($hGraphics) übertragen werden (diese ist nicht sichtbar)
    $Radio1 = GUICtrlCreateRadio("Verliebt", 24, 32, 113, 25)
    $Radio2 = GUICtrlCreateRadio("Glucklich", 24, 56, 113, 25
    $Radio3 = GUICtrlCreateRadio("Geht so", 24, 80, 113, 25)
    $Radio4 = GUICtrlCreateRadio("Scheise", 24, 104, 113, 25)
    $Radio5 = GUICtrlCreateRadio("Bose", 24, 128, 113, 25)
    $Label1 = GUICtrlCreateLabel("Wie ist ihrer Laune momentan?", 8, 8, 150, 17)
    $Button1 = GUICtrlCreateButton("Weiter", 16, 160, 129, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $hVerliebt = _GDIPlus_ImageLoadFromFile( Pfad zum Bild ) ;Lädt das Bild in die Variable $hVerliebt
    $hGlucklich = _GDIPlus_ImageLoadFromFile( Pfad zum Bild )
    $hGehtso = _GDIPlus_ImageLoadFromFile( Pfad zum Bild )
    $hScheise = _GDIPlus_ImageLoadFromFile( Pfad zum Bild )
    $hBose = _GDIPlus_ImageLoadFromFile( Pfad zum Bild )

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $Radio1
    $aktuellesBild = $hVerliebt ; Wechselt das Aktuelle Bild auf $hVerliebt
    Case $Radio2
    $aktuellesBild = $hGlucklich
    case $Radio3
    $aktuellesBild = $hGehtso
    case $Radio4
    $aktuellesBild = $hScheise
    case $Radio5
    $aktuellesBild = $hBose
    EndSwitch
    _GDIPlus_GraphicsClear($hBuffer, 0xFFFFFFFF);Überdeckt den gesamten Grafikinhalt mit der Farbe 0xFFFFFFFF (weiß) Farbcodeaufbau: 0x+Alpha+RGB Code Alpha......Tranzparenz
    _GDIPlus_GraphicsDrawImage($hBuffer, $aktuellesBild, 0, 0);Zeichnet das Aktuelle Bild auf die Grafik $hBuffer mit den Koordinaten X = 0 Y = 0 (Wichtig: $hBuffer = $hBitmap)
    ;Das Bild ist noch nicht zu sehen da $hBuffer nicht sichtbar ist
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 171, 0);Zeichnet das Bild $hBitmap auf die Grafik $hGraphics mit den Koordinaten X = 171 Y = 0 (Das Bild ist jetzt zu sehen)
    WEnd

    [/autoit]
  • so gehts
    kleiner fehler :D

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    Opt("TrayMenuMode", 1)
    _GDIPlus_Startup()

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Smilez", 350, 191, 210, 201)
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($Form1);Erstellt eine Grafik aus der Gui $Form1 (diese ist sichtbar)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(179, 191, $hGraphics);Erstellt ein Bild(Bitmap) aus der Grafik
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap);Erstellt wieder eine Grafik aus dem Bild, beim zeichnen in diese Grafik wird eigentlich in $hBitmap gezeichnet
    ;somit kann das Bild($hBitmap) später zu einem beliebigen Zeitpunkt auf die Hauptgrafik($hGraphics) übertragen werden (diese ist nicht sichtbar)
    $Radio1 = GUICtrlCreateRadio("Verliebt", 24, 32, 113, 25)
    $Radio2 = GUICtrlCreateRadio("Glucklich", 24, 56, 113, 25)
    $Radio3 = GUICtrlCreateRadio("Geht so", 24, 80, 113, 25)
    $Radio4 = GUICtrlCreateRadio("Scheise", 24, 104, 113, 25)
    $Radio5 = GUICtrlCreateRadio("Bose", 24, 128, 113, 25)
    $Label1 = GUICtrlCreateLabel("Wie ist ihrer Laune momentan?", 8, 8, 150, 17)
    $Button1 = GUICtrlCreateButton("Weiter", 16, 160, 129, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $hVerliebt = _GDIPlus_ImageLoadFromFile( "smilie2-verliebt.jpg" ) ;Lädt das Bild in die Variable $hVerliebt
    $hGlucklich = _GDIPlus_ImageLoadFromFile( "smilie-glucklich.jpg" )
    $hGehtso = _GDIPlus_ImageLoadFromFile( "smilie-daneben.jpg" )
    $hScheise = _GDIPlus_ImageLoadFromFile( "smilie-skeptisch.jpg" )
    $hBose = _GDIPlus_ImageLoadFromFile( "smilie-boese.jpg" )
    Global $aktuellesBild = $hVerliebt

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $Radio1
    $aktuellesBild = $hVerliebt ; Wechselt das Aktuelle Bild auf $hVerliebt
    Case $Radio2
    $aktuellesBild = $hGlucklich
    case $Radio3
    $aktuellesBild = $hGehtso
    case $Radio4
    $aktuellesBild = $hScheise
    case $Radio5
    $aktuellesBild = $hBose
    EndSwitch
    _GDIPlus_GraphicsClear($hBuffer, 0xFFFFFFFF);Überdeckt den gesamten Grafikinhalt mit der Farbe 0xFFFFFFFF (weiß) Farbcodeaufbau: 0x+Alpha+RGB Code Alpha......Tranzparenz
    _GDIPlus_GraphicsDrawImage($hBuffer, $aktuellesBild, 0, 0);Zeichnet das Aktuelle Bild auf die Grafik $hBuffer mit den Koordinaten X = 0 Y = 0 (Wichtig: $hBuffer = $hBitmap)
    ;Das Bild ist noch nicht zu sehen da $hBuffer nicht sichtbar ist
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 171, 0);Zeichnet das Bild $hBitmap auf die Grafik $hGraphics mit den Koordinaten X = 171 Y = 0 (Das Bild ist jetzt zu sehen)
    WEnd

    [/autoit]
  • Vielen vielen dank..


    Kleine frage noch kann man auch bilder in einem Tooltip anyeigen

  • so ich hab das ganye jetyt auch mal mit Guictrlreatepic versuht(man sollte ja auch immermaldie andere methode ueben)

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $fAuswahl = GUICreate("Laune", 153, 202, 252, 284)
    $Radio1 = GUICtrlCreateRadio("Geht so", 32, 56, 81, 17)
    $Radio3 = GUICtrlCreateRadio("Peinlich", 32, 104, 81, 17)
    $Radio4 = GUICtrlCreateRadio("Verliebt", 32, 128, 81, 17)
    $Radio5 = GUICtrlCreateRadio("Relaxt", 32, 152, 81, 17)
    $Radio6 = GUICtrlCreateRadio("Gut", 32, 32, 81, 17)
    $Radio7 = GUICtrlCreateRadio("Schlecht", 32, 80, 81, 17)
    $Radio2 = GUICtrlCreateRadio("Traurig", 32, 176, 81, 17)
    $Label1 = GUICtrlCreateLabel("Geben sie ihr Laune an!", 8, 8, 117, 17)
    GUISetState(@SW_SHOW)
    $Form1 = GUICreate("Form1", 301, 226, 192, 124, BitOR($WS_MINIMIZEBOX,$WS_SYSMENU,$WS_DLGFRAME,$WS_POPUP,$WS_GROUP,$WS_CLIPSIBLINGS))
    ;~ $Pic1 = GUICtrlCreatePic("E:\Autoit\Laune\Bilder Gros\geht so.jpg", 0, 0, 297, 225, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetState(@SW_HIDE)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Radio1
    $Pic1 = GUICtrlCreatePic("E:\Autoit\Laune\Bilder Gros\geht so.jpg", 0, 0, 297, 225, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)
    Case $Radio2
    $Pic2 = GUICtrlCreatePic("E:\Autoit\Laune\Bilder Gros\traurig.jpg", 0, 0, 297, 225, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)
    Case $Radio3
    $Pic3 = GUICtrlCreatePic("E:\Autoit\Laune\Bilder Gros\peinlich.jpg", 0, 0, 297, 225, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)
    Case $Radio4
    $Pic4 = GUICtrlCreatePic("E:\Autoit\Laune\Bilder Gros\verliebt.jpg", 0, 0, 297, 225, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)
    Case $Radio5
    $Pic5 = GUICtrlCreatePic("E:\Autoit\Laune\Bilder Gros\relaxt.jpg", 0, 0, 297, 225, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)
    Case $Radio6
    $Pic6 = GUICtrlCreatePic("E:\Autoit\Laune\Bilder Gros\gut.jpg", 0, 0, 297, 225, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)
    Case $Radio7
    $Pic7 = GUICtrlCreatePic("E:\Autoit\Laune\Bilder Gros\schlecht.jpg", 0, 0, 297, 225, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)
    EndSwitch
    WEnd

    [/autoit]

    Ich habe jetyt auch auf 7 Arten erweitert..

    beim ersten mal Radio druecken geht alles perfekt aber wen man danach den neachsten drueckt passiert nichts!..Wenn jemand die bilder braucht pls bscheid sagen

  • du erstellst dann immer ein neues bild o,o müsste doch ein vorlage bild hinsetzen und dann guictrlsetpic oder so nehmen