Daumenkino mit AutoIt?

  • Hallöle,
    ich möchte eine Art Daumenkino mit AutoIt machen...
    Das soll so ähnlich werden wie Pivot.
    Also, man soll eine Frame-Anzeige haben und im Center ein weißes Fenster, wo ein Strichmännchen ist und was man an roten Punkten bewegen kann.
    Das ganze soll nicht veröffentlicht werden, soll nur mal son kleines Projekt sein!

    MfG button421

    Meine fertigen Projekte:
    VirtualCash
    Monopoly Digital

    Daran arbeite ich gerade:
    Einem Skript, womit man ohne Programmierkentisse eigene Programme machen kann (habe ich selber früher gesucht :D ) Stand: ||||||||||||||||||||||||| 6%

  • Sorry, aber ich bin in Sachen GDI+ ein blutiger Anfänger! Könntest du mir vlt. sagen, wo ich da gucken muss? Das wäre nett!

    Meine fertigen Projekte:
    VirtualCash
    Monopoly Digital

    Daran arbeite ich gerade:
    Einem Skript, womit man ohne Programmierkentisse eigene Programme machen kann (habe ich selber früher gesucht :D ) Stand: ||||||||||||||||||||||||| 6%

  • Du müsstest ein Array mit den Punkten der Gelenke machen und dann immer Linien dahinzeichnen. Dann speicherst du pro Frame ab wo sich was befindet und dann kannst du es immer abspielen (Und sogar eig ganz einfach abspeichern)

    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

  • Oder ganz simpel: Du machst z.B. in Paint die einzelnen Bilder und speicherst sie als JPG. Dann erstellst du per Guictrlcreatepic das Bild und löscht es nach einer halben Sekunde wieder (guictrldelete) und erstellst wieder ein neues Bild. Das ist jetzt vielleicht nicht die proffestionellste Variante, aber die einfachste.

  • @Cheater: Vllt einfacher zu progammieren, aber schneller gehts am Ende mit dem "InProgrammPositionErstellen", da man nicht immer die Bilder neuzeichnen muss, abspeichern, laden..^^

    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

  • Danke, ich werde mir die Lösungen von BadBunny und hauke96 mal mehr anschauen.
    Zu CheaterDieter: Ist eigentlich in Ordnung, nur man soll in meinem Programm die Animationen selber machen können und nicht abspielen! Werde es mir trotzdem mal ansehen!

    Meine fertigen Projekte:
    VirtualCash
    Monopoly Digital

    Daran arbeite ich gerade:
    Einem Skript, womit man ohne Programmierkentisse eigene Programme machen kann (habe ich selber früher gesucht :D ) Stand: ||||||||||||||||||||||||| 6%

  • Naja, ob die Figuren dort gezeichnet werden, weiß ich noch nicht... Feststeht, dass auf jeden Fall schon fertige Figuren zur Verfügung stehen werden. An denen soll man dann mittels den Punkten oder auch Joints genannt, die verschiedenen Gelenke bewegen können, und alles als Einzelbild (Frame) gespeichert wird. Vielleicht erstelle ich da auch noch eine Dateiendung für eine Datei, wo drin das Array mit den Frames gespeichert wird...

    Meine fertigen Projekte:
    VirtualCash
    Monopoly Digital

    Daran arbeite ich gerade:
    Einem Skript, womit man ohne Programmierkentisse eigene Programme machen kann (habe ich selber früher gesucht :D ) Stand: ||||||||||||||||||||||||| 6%

  • Ich hab mir hab hier mal ein Beispielscript gemacht, ist noch nicht perfekt, aber ein anganf:

    Spoiler anzeigen
    [autoit]

    #include<GDIPlus.au3>
    #include<Misc.au3>
    Global $iX = 150, $iY = 170, $iWH = 15, $aPoints[5][2]
    $hGui = GUICreate("Pivot Fälschung ;)", 600, 500)
    GUISetState()
    _GDIPlus_Startup() ; GDIPlus Engine starten ( !!! Wichtig )
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui) ;Handle zur GUI herstellen
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(600, 500, $hGraphics); Bild von der GUI erstellen
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap); Buffer erstellen
    $hBrush_red = _GDIPlus_BrushCreateSolid(0xFFFF0000);--> Rot
    $hBrush_white = _GDIPlus_BrushCreateSolid(0xFFFFFFFF);--> Weiß
    $hBrush_black = _GDIPlus_BrushCreateSolid(0xFF000000);--> Schwarz
    _GDIPlus_GraphicsFillRect($hBuffer, 0, 0, 600, 500, $hBrush_white); Hintergrund färben
    ; Punkte für Polygon:
    $aPoints[0][0] = 4
    $aPoints[1][0] = 100
    $aPoints[1][1] = 100
    $aPoints[2][0] = 110
    $aPoints[2][1] = 100
    $aPoints[3][0] = $iX + 12.5
    $aPoints[3][1] = $iY + 5
    $aPoints[4][0] = $iX + 2.25
    $aPoints[4][1] = $iY + 5
    _GDIPlus_GraphicsFillPolygon($hBuffer, $aPoints, $hBrush_black); Polygon zeichnen
    _GDIPlus_GraphicsFillPie($hBuffer, $iX, $iY, $iWH, $iWH, 0, 360, $hBrush_red); Ounkt zeichnen
    while 1
    $mPos = GUIGetCursorInfo() ;--> Maus Position auf der GUI
    $mMsg = GUIGetMsg() ;--> GUI Aktivitäten
    Select
    case $mMsg = -3 ;--> Rotes kreuz oben rechts
    Exit
    case _IsPressed(01) And $mPos[0] >= $iX And $mPos[0] <= $ix + $iWH And $mPos[1] >= $iY And $mPos[1] <= $iY + $iWH; Wenn Maus geklickt und auf dem Punkt ist, dann...
    while _IsPressed(01); solange Maus gedrückt ist
    $mPos = GUIGetCursorInfo() ;--> Maus Position auf der GUI
    $iX = $mPos[0] - $iWH / 2 ;Punkte des Punktes verändern
    $iY = $mPos[1] - $iWH / 2 ; "
    $aPoints[3][0] = $iX + 12.5; Punkte des Strichs ( Polygons ) verändern
    $aPoints[3][1] = $iY + 5; "
    $aPoints[4][0] = $iX + 2.25; "
    $aPoints[4][1] = $iY + 5 ; "
    _GDIPlus_GraphicsFillRect($hBuffer, 0, 0, 600, 500, $hBrush_white); Hintergrund zeichnen ( übermalen )
    _GDIPlus_GraphicsFillPolygon($hBuffer, $aPoints, $hBrush_black); Polygon zeichnen
    _GDIPlus_GraphicsFillPie($hBuffer, $iX, $iY, $iWH, $iWH, 0, 360, $hBrush_red); Punkt zeichnen
    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, 600, 500); "Neues" Bild anzeigen
    WEnd
    EndSelect
    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, 600, 500); "Neues" Bild anzeigen
    WEnd

    [/autoit]

    mfg
    Hauke

  • hauke96: Das ist sehr gut, daraus kann ich viel machen! Nur eins, wenn ich den roten Punk genau in die X-Koordinate lege, wo auch der Start der Linie ist, wird diese teilweise versteckt...
    Könnte man das nicht so machen, dass der Strich oder die Linie immer die gleiche Dicke hat und nicht so, wo er immer verschieden dick ist, jenachdem auf welcher Koordinate er liegt?

    Meine fertigen Projekte:
    VirtualCash
    Monopoly Digital

    Daran arbeite ich gerade:
    Einem Skript, womit man ohne Programmierkentisse eigene Programme machen kann (habe ich selber früher gesucht :D ) Stand: ||||||||||||||||||||||||| 6%