GDI+ was ist das?

  • Hey
    Ich habe mir ein paar der treads angeguckt und bin öffters auf sogenannte GDI+ scripts gestoßen und hab gemerkt das es was mit bilder zu tun hat und sachen die sich bewegen etc.

    könnte mir jemand das pls erklären?
    schonmal danke im vorraus

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

    3 Mal editiert, zuletzt von BadBunny (4. Juni 2010 um 17:12)

  • ich weiss nicht wie aber.. irgenwie hab ichs verstanden!!! Und wo wir gerade dabei sind, also das is der script (besteht zu 99.99% aus dem aus dem tutoriel nur die bilder sind von mir xD), und wie könnt man das machen z.b. wie bei pacman das man nur bestimte stellen erreischen kann?

    z.B. in einem labyrinth ud das da noch andere figuren rumrennen? Bitte um schnelle antworten und sag schonmal danke^^

    [autoit]

    #include <GuiConstants.au3>
    #include <GdiPlus.au3>;das include
    #include <Misc.au3>

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

    OnAutoItExitRegister("_end") ; die Funktion _end am Ende des Scriptes ausführen

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

    $x = 0;x und y deklarieren
    $y = 0

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

    $Gui = GUICreate("Beispiel", 179, 163, 100,100)
    GUISetState(@SW_SHOW)

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

    _GDIPlus_Startup() ;Gdi starten

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

    $figur = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\figur.png")
    $bk = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\hintergrund.gif")
    $height = _GDIPlus_ImageGetHeight($figur)
    $width = _GDIPlus_ImageGetWidth($figur)
    $verhaelnis = $height / $width
    $graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
    $bitmap = _GDIPlus_BitmapCreateFromGraphics(179, 163, $graphic)
    $buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    Select
    Case _IsPressed(25) and not $x <= 0; ------------- geändert -------------
    $x -= 3
    Case _IsPressed(26) and not $y <= 0; ------------- geändert -------------
    $y -= 3
    Case _IsPressed(27) and $x <= 160; ------------- geändert -------------
    $x += 3
    Case _IsPressed(28) and $y <= 125; ------------- geändert -------------
    $y += 3
    EndSelect

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

    _GDIPlus_GraphicsDrawImageRect($buffer,$bk,0,0,179, 163)
    _GDIPlus_GraphicsDrawImageRect($buffer,$figur,$x,$y,10, 10 * $verhaelnis)
    _GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)
    Sleep(30)

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

    WEnd

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

    Func _end();die Exit funktion
    _GDIPlus_GraphicsDispose($graphic);Grafik Objekt freigeben
    _GDIPlus_GraphicsDispose($buffer)
    _GDIPlus_BitmapDispose($bitmap)
    _GDIPlus_ImageDispose($figur);Bild Objekt 1 freigeben
    _GDIPlus_ImageDispose($bk);Bild Objekt 2 freigeben
    _GDIPlus_Shutdown();Ressourcen freigeben
    EndFunc

    [/autoit]

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

  • Was meinst du genau mit bestimmte stellen?
    :)
    Du könntest dir evtl noch Bilder für Wände suchen diese dann ins script einfügen und dann mit Kollisionen arbeiten aber ich weis nicht wenn das dein
    erstes GDI+ script ist dann les dich lieber noch etwas ein ;)

    MfG Hellboy

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio

  • hellboy wie könnte man das denn machen das man mit der "figur" die wände nicht berühren kann?
    dann muss man doch so schreiben das er an bestimmte stellen nicht hin kommt oder?

    wie geht das in "einfacher" verion?

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

  • Also ich hab ein wenig rumexperimentiert und hab das jetzt so eingestellt das man wieder bei 0,0 anfängt wenn man den schwarzen balken berührt (hab ich mit pixelsearch gemacht)
    aber das geht nur wenn der gui nicht verschoben wird weil die kordinaten vom gesammten desktop sind und nicht nur im gui wie find ich die herraus und wie kann ich einstellen dasd Pixelsearch nach den koordinaten (x, y) im gui guckt???
    also Hier ist das was ich bisjetzt gemacht hab :

    Spoiler anzeigen
    [autoit]


    #include <GuiConstants.au3>
    #include <GdiPlus.au3>;das include
    #include <Misc.au3>
    MsgBox (0, "Aufgabe", "Komme zum Ziel ohne die schwarzen Balken zu berühren!!!")

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

    OnAutoItExitRegister("_end") ; die Funktion _end am Ende des Scriptes ausführen

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

    $x = 0;x und y deklarieren
    $y = 0

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

    $Gui = GUICreate("Beispiel", 179, 163, 100,100)
    GUISetState(@SW_SHOW)

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

    _GDIPlus_Startup() ;Gdi starten

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

    $figur = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\figur.gif")
    $bk = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\weiss.jpg")
    $balken = _GDIPlus_ImageLoadFromFile (@ScriptDir & "\balken.gif")
    $height = _GDIPlus_ImageGetHeight($figur)
    $width = _GDIPlus_ImageGetWidth($figur)
    $verhaelnis = $height / $width
    $graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
    $bitmap = _GDIPlus_BitmapCreateFromGraphics(179, 163, $graphic)
    $buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
    $buffer1 = _GDIPlus_ImageGetGraphicsContext($bitmap)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    Select
    Case _IsPressed(25) and not $x <= 0 ; nach links
    $x -= 3
    Case _IsPressed(26) and not $y <= 0; nach oben
    $y -= 3
    Case _IsPressed(27) and $x <= 160 ; nach rechts
    $x += 3
    Case _IsPressed(28) and $y <= 135 ; nach unten
    $y += 3
    EndSelect

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

    _GDIPlus_GraphicsDrawImageRect($buffer,$bk,0,0,179, 163)
    _GDIPlus_GraphicsDrawImageRect($buffer1,$balken,25, 30, 100, 10)
    _GDIPlus_GraphicsDrawImageRect($buffer,$figur,$x,$y,25, 25 * $verhaelnis)
    _GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)
    Sleep(30)

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

    $variable = Pixelsearch (128, 160, 227, 161, 0xFFFFFF)
    If IsArray ($variable)= True Then
    $x = 0
    $y = 0

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

    EndIf
    WEnd

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

    Func _end ();die Exit funktion
    _GDIPlus_GraphicsDispose($graphic);Grafik Objekt freigeben
    _GDIPlus_GraphicsDispose($buffer)
    _GDIPlus_BitmapDispose($bitmap)
    _GDIPlus_ImageDispose ($balken)
    _GDIPlus_ImageDispose($figur);Bild Objekt 1 freigeben
    _GDIPlus_ImageDispose($bk);Bild Objekt 2 freigeben
    _GDIPlus_Shutdown();Ressourcen freigeben
    EndFunc

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


    Edit Oscar: Bitte Doppelposts vermeiden (Bearbeiten-Button verwenden)! Spoiler hinzugefügt!

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

    Einmal editiert, zuletzt von Oscar (4. Juni 2010 um 16:17)

  • So :

    Spoiler anzeigen
    [autoit]


    #include <GuiConstants.au3>
    #include <GdiPlus.au3>;das include
    #include <Misc.au3>
    MsgBox (0, "Aufgabe", "Komme zum Ziel ohne die schwarzen Balken zu berühren!!!")

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

    OnAutoItExitRegister("_end") ; die Funktion _end am Ende des Scriptes ausführen

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

    $x = 0;x und y deklarieren
    $y = 0

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

    $Gui = GUICreate("Beispiel", 179, 163, 100,100)
    GUISetState(@SW_SHOW)

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

    _GDIPlus_Startup() ;Gdi starten

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

    $figur = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\figur.gif")
    $bk = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\weiss.jpg")
    $balken = _GDIPlus_ImageLoadFromFile (@ScriptDir & "\balken.gif")
    $ziel = _GDIPlus_ImageLoadFromFile (@ScriptDir & "\ZIEL.gif")
    $height = _GDIPlus_ImageGetHeight($figur)
    $width = _GDIPlus_ImageGetWidth($figur)
    $verhaelnis = $height / $width
    $graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
    $bitmap = _GDIPlus_BitmapCreateFromGraphics(179, 163, $graphic)
    $buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
    $buffer1 = _GDIPlus_ImageGetGraphicsContext($bitmap)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    Select
    Case _IsPressed(25) and not $x <= 0 ; nach links
    $x -= 3
    Case _IsPressed(26) and not $y <= 0; nach oben
    $y -= 3
    Case _IsPressed(27) and $x <= 160 ; nach rechts
    $x += 3
    Case _IsPressed(28) and $y <= 135 ; nach unten
    $y += 3
    EndSelect

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

    _GDIPlus_GraphicsDrawImageRect($buffer,$bk,0,0,179, 163)
    _GDIPlus_GraphicsDrawImageRect($buffer1,$balken,25, 30, 100, 10)
    _GDIPlus_GraphicsDrawImageRect ($buffer1, $ziel, 160, 135, 20,20 )
    _GDIPlus_GraphicsDrawImageRect($buffer,$figur,$x,$y,25, 25 * $verhaelnis)
    _GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)
    Sleep(30)

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

    $variable = Pixelsearch (128, 160, 227, 161, 0xFFFFFF)
    If IsArray ($variable)= True Then
    $x = 0
    $y = 0
    EndIf
    $variable1 = PixelSearch (263, 261, 281, 279, 0xFFFFFF)
    If IsArray ($variable1) = True Then
    MsgBox (0,"Win","Du hast es geschafft")
    Exit
    EndIf

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

    WEnd

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

    Func _end ();die Exit funktion
    _GDIPlus_GraphicsDispose($graphic);Grafik Objekt freigeben
    _GDIPlus_GraphicsDispose($buffer)
    _GDIPlus_BitmapDispose($bitmap)
    _GDIPlus_ImageDispose ($balken)
    _GDIPlus_ImageDispose($figur);Bild Objekt 1 freigeben
    _GDIPlus_ImageDispose($bk);Bild Objekt 2 freigeben
    _GDIPlus_Shutdown();Ressourcen freigeben
    EndFunc

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


    Bitte um schnelle lösung weil es soll nicht nur auf meinem Pc spielbar sein.

    Edit Oscar: Bitte Doppelposts vermeiden (Bearbeiten-Button verwenden)! Spoiler hinzugefügt!

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

    Einmal editiert, zuletzt von Oscar (4. Juni 2010 um 16:18)

  • Dazu gibt es im Tutorial ganz am Ende des Spiele Parts ein Beispiel.
    Wenn dus nicht verstehst nochmal fragen.

    mfg Ubuntu

  • Zitat

    ich weiss... aber wie kann ichs sonst machen ohne so lange komplizierte sachen zu schreiben?


    Du kannst die Koordinaten überprüfen ;). Oder die Region Methode verwenden, aber das verstehst du ja nicht.
    Ist das nicht in Ubuntus Tutorial beschrieben? ?(