Gibt es eigentlich auch andere möglichkeiten Grafiken zu Zeichnen außer GDI/GDI+ bei Autoit?
The MATRIX build 2018-10-16
-
-
Gibt es eigentlich auch andere möglichkeiten Grafiken zu Zeichnen außer GDI/GDI+ bei Autoit?
Nicht gerade mein Fachgebiet, aber schaue z.B. mal :
Edit :
Oh, an dieser Stelle auch von mir ein großes Kompliment an UEZ
Gruß Musashi
-
Oder hier: Direct2D UDF
-
hey UEZ
gibt es eigentlich eine Möglichkeit, das als GUI Background zu verwenden?
Ich vermute, dass es nur über den Umweg eines 2. Prozesses geht mit nem transparenten GUI, das direkt über der Matrix liegt ?!
Das eigentliche Skript (mit dem transparenten GUI) muss dann den Matrixprozess starten und GUI-Höhe /-Breite mit übergeben, damit die Fenstergrösse stimmt.
und wenn das Fenster verschoben wird... muss der transparente GUI immer im Vordergrund sein, darf aber keine Titelleiste haben und sich mit der Fensterposition
immer an der Matrix halten... Sind die Gedanken soweit korrekt?
mfG Lo..
-
Hi Lottich,
man könnte es auch direkt in eine GUI darstellen, ohne eine Child GUI zu verwenden, aber beides ist möglich.
Schaue mal hier: https://www.autoitscript.com/forum/topic/19…comment=1403561
Anstelle der GIF Animation könnte man auch "The MATRIX" als Hintergrund darstellen. Probiere mal das zu basteln.
-
Danke für die schnellen antworten, die UDF's werd ich mir bei Gelegenheit mal genauer anschauen.
-
60FPS im Fullscreen, damit kann (muss) man leben! :o)
Fullscreen ist zwar richtig, aber es wird nur auf halbe Größe gezeichnet und dann auf Fullscreen skaliert. Da "türke" ich etwas...
Du kannst ja mal richtig auf Fullscreen die $iW / $iH setzen und checken, ob du noch deine 60 FPS bekommst. Meine alte Kiste schafft nur etwa die Hälfte...
Btw, ich habe das Skript nochmals aktualisiert. Ich hatte vergessen, dass GDI Bitmaps, die mit CreateDIBSection erstellt wurden, schneller sind. Außerdem kann man jetzt nach dem Starten aussuchen, ob man Fullscreen starten möchte oder nicht.
Ich glaube, dass reicht erst mal mit dem Matrix Skript. Ich habe noch eine weiter Idee, die ich versuchen werde in FB umzusetzen, da viel schneller, wenn ich die Farben manipulieren will.
-
Hey danke für das Update UEZ
Ich habe das (mit der Manipulation von $iW / $iH) mal auf meinen Laptop getestet (i7-6500U). Ergebnis waren 24fps. Zwar finde ich die feinere Optik eigentlich viel besser, aber so langsam ist es dann doch nicht, Da finde ich das tricksen schon in Ordnung
-
Mist! Es klappt nicht wie ich will... (wie so oft )
Ich hab mir vom Matrixcode ein Gif erstellt. Aber damit das reibungslos immer wieder von vorne beginnt, so, dass man die Wiederhohlung nicht wahrnimmt,
kriege ich nicht hin.
Vom erstellten Gif hab ich alle Frames (378) als Bild gespeichert und anschliessend jedes Bild binär eingelesen und mit den anderen verglichen um irgendein
Duplikat zu finden, damit ich dann eine passende Stelle hab , ab wann sich das Gif wiederholen soll. Aber es gibt keine Duplikate... Auch nicht nach dem 10. neuen Gif.
Oder vergleiche ich falsch?
Code
Alles anzeigen#include <File.au3> $counter = 0 $list = _FileListToArray(@DesktopDir & "\matrix_frames\", "*.gif", 1) ConsoleWrite(@CRLF & "suche startet..." & @CRLF & @CRLF) For $i = 1 To UBound($list) -1 $hFile = FileOpen(@ScriptDir & "\" & $list[$i], $FO_BINARY) $suche_dies = FileRead($hFile) FileClose($hFile) ConsoleWrite("Datei eingelesen: " & $list[$i] & @CRLF) For $k = 1 To UBound($list) -1 If $list[$i] = $list[$k] Then ContinueLoop ; skippen, wenn sich das bild mit sich selbst vergleichen soll $hFile = FileOpen(@ScriptDir & "\" & $list[$k], $FO_BINARY) $filetext = FileRead($hFile) FileClose($hFile) ConsoleWrite(" --> Vergleiche mit: " & $list[$k]) If $suche_dies = $filetext Then $counter += 1 ConsoleWrite(" == " & $list[$i] & " --> erfolgreich") Else ConsoleWrite(" <> " & $list[$i] & " --> gescheitert") EndIf ConsoleWrite(@CRLF) Next ConsoleWrite(@CRLF) Next MsgBox(0,"",$counter) ;nur zum test soll die Duplikat-Anzahl gezeigt werden
-
Lottich In Zeile 110-115 wird mit Hilfe der Funktion Random die Position von neuen Zeichen erzeugt, sowie festglegt wie weit diese in y Richtung wandern und mit welcher Geschwindigkeit. Dürfte daher seine Zeit brauchen bis du exakt das gleiche Bild wieder bekommst. Werden als definitiv zu viele Bilder sein, für ein Gif, bevor du eine Perfekte Schleife erzeugen kannst.
Die Funktion von deinem eigenen Skript sieht auf den ersten blick soweit gut aus, blos wie schon oben erwähnt dürften hier 378 Frames lange nicht ausreichen. Man könnte jetzt theoretisch auch berechnen ab wievielen Frames eine Wiederholung erzeugt wird, wobei durch die 3 Parameter x, y und vy das Ergebnis nicht gerade eine kleine Zahl sein wird.
-
Lottich : ich vermute, dass Aufgrund der Zufallskoordinaten die Wahrscheinlichkeit sehr klein ist, dass du ein gleiches Bild entdeckst. Wenn die GIF Animation relativ lange ist, dann sollte der kleine Wechsel zum Anfang nicht sonderlich stören.
Oder du nimmst die Variante und generierst den Hintergrund in Echtzeit, wie im anderen Beispiel.
-
...oder man verwendet keinen Zufallsgenerator, sondern erstellt das nächste Zeichen über eine Berechnung/Formel, deren Wert sich immer wiederholt, bspw. Sinus.
-
Gibt es eigentlich auch andere möglichkeiten Grafiken zu Zeichnen außer GDI/GDI+ bei Autoit?
Von der Effizienz ist Irrlicht aus meiner Erfahrung am besten.
Leider ist der Wrapper bzw die Umsetzung für AutoIt nicht ansatzweise so gut wie für C++. -