Tag zusammen,
ich wollte in diesem Thread Verbesserungsvorschläge, Ideen und anderes sammeln was bei Quickdraw noch fehlt.
QuickDraw Verbesserungen, Ideen - was fehlt noch?
-
-
Mann sollte den Pfad zu den Quickdraw DLL´s verändern dürfen.
-
- Import von Speziellen Grafiken (.iff; .svg etc.)
- Export funktion (Aktuelle Ansicht in .jpg speichern)
- Speichern der aktuellen Ansicht in Datei, die man dann per QuickDraw wieder öffnen kann, mit eigener Dateiendung (z.B. .qd; .quickd)Jetzt kommen noch ein paar, die sind aber evtl. sehr schwer zu realisieren.
- Hinzufügen von Lichtquellen
- Bumpmapping hinzufügen -
tga kann man schon öffnen
-
Mann sollte den Pfad zu den Quickdraw DLL´s verändern dürfen.
[autoit]
Ich hab mal schnell was geschrieben^^:
Bei den Variablen muss noch das hier hin:Global $QuickDraw_DllPath="AutoIt QuickDraw.dll"
[/autoit]
[autoit]
Und die Funktion:Func _QuickDraw_SetDllPath( $DllPath )
[/autoit]
If $QuickDrawDLL<>0 Then
DllClose( $QuickDrawDLL )
$QuickDrawDLL=DllOpen( $DllPath )
If $QuickDrawDll=-1 Then
$QuickDrawDLL=DllOpen( $QuickDraw_DllPath )
Return 0
EndIf
EndIf
$QuickDraw_DllPath=$DllPath
Return 1
EndFunc -
Getestet ?
Ich glaube du wirst zu dem gleichen Ergebnis kommen wie ich (Quickdraw.DLL konnte nicht gefunden werden). -
Ja ich habs getestet. Aber bei mir kommt der Fehler nicht, mir ist nur grade aufgefallen, dass ich die Fehlermeldung "FreeImage.dll konnte nicht gefunden werden." bekomme
-
Ja weil QD erwartet das die DLL im Verzeichnis ist wo auch die Quickdraw.au3 ist.
-
Aber in der QuickDraw.au3 ist nirgendwo der Pfad zur FreeImage.dll angegeben
-
Aber die QuickDraw.dll erwartet die FreeImage.dll irgendwo im %PATH%. Du kannst aber das Verzeichnis per EnvGet, EnvSet, EnvUpdate an die PATH-Variable anfügen.
-
Danke, habs verbessert:
Spoiler anzeigen
[autoit]Func _QuickDraw_SetDllPath( $DllPath )
[/autoit]
If $QuickDrawDLL<>0 Then
DllClose( $QuickDrawDLL )
$QuickDrawDLL=DllOpen( $DllPath )
If $QuickDrawDll=-1 Then
$QuickDrawDLL=DllOpen( $QuickDraw_DllPath )
Return 0
EndIf
EndIf
$QuickDraw_DllPath=$DllPath
$sPath=StringSplit($DllPath, "\")
$dllpath=""
For $i=1 to $sPath[0]-1
$dllpath&=$sPath[$i]&"\"
Next
EnvSet("PATH", $dllpath)
EnvUpdate()
Return 1
EndFunc
Die Globale Variable muss immernoch gesetzt werden. -
Die FreeImage.dll muss im gleichen ordner sein wie die Quickdraw.dll
-
Ist sie ja auch, aber wie progandy erklärte, muss die Umgebungsvariable %PATH% ja geändert werden, damit diese Funktion klappt. Naja, jetzt geht es ja^^. Sorry, dass ich dir die "Arbeit" abgenommen habe^^
-
Also wie ich sehe, gibts keine Projektdatei (Source) , stimmts.
Dann kann ich nur Fluchen. OPEN-SOURCE 4-ever!
-
Alternativ kann man die FreeImage.dll mit DLLOpen auch selbst VOR der QuickDraw.dll öffnen. Das ist meiner Meinung nach sogar besser
-
Mein Script läuft auf 3 Rechnern unterschiedlich. Aber mal sowas von unterschiedlich, auf mein 600Mhz mit XP ist alles OK; auf diesem Rechner mit Win7x64 wird mir nur das erste dargestellte Bild angezeigt; wobei auf dem gleichen Rechner mit XP alles glatt läuft; und auf dem frisch Recoverten Rechner von meinem brüderchen wird nichtmals ein Bild dargestellt...
Gibt´s irgendwelche Vorraussetzungen wegen OpenGL und DirectX oder gibt es unterschiede zwischen ATI und Nvidia Karten
Im prinzip liegt der Fehler in der Funktion:
[autoit]
_QuickDraw_CreateSurface($GUI, 0, 0, 300, 300)
Und bevor ich geschlagen werde, ja ich habe den Source und die Info´s der Funktion gelesen. ABER in meinem Falle brauche ich diese Funktion umbedingt, da ein 'Render' Child-Gui in der Haupt-Gui angezeigt werden soll. Und dann sieht es natürlich schei... aus, wenn das Renderfenster immer verschwindet und erst an Ort-und-Stelle geschoben werden muss (mit _QuickDraw_Enable).$MainGUI = GUICreate($title, 800, 600, -1, -1)
[/autoit]
...
$GUI = GUICreate("", 640, 480, 10, 10, $WS_CHILD, $WS_EX_TOPMOST, $MainGUI)
...
_QuickDraw_CreateSurface($GUI, 0, 0, 300, 300)Also ich hoffe auf ein Update welches die Funktion '_QuickDraw_CreateSurface' Fixt.
Sonst echt gute Arbeit, weiter so!
Grüsse! -
Ich denke die UDF zielt vorallem auf Spiele, soll sollten dann auch Sprites und Collisionen vorhanden sein, den die Dll-Aufrufe die das bewegte Bild ermöglichen sind auch CPU-lastig! Die Dll sollte das übernehmen, wenn du dazu Hilfe brauchst, kannst du dir die Propseed.dll anschauen, die hat so was schon. Backgroundscrolling wäre auch schön!
-
Techmix: Diese Macke kann man so umgehen
[autoit]$hGui = GUICreate("", 1, 1, 1, 1)
[/autoit][autoit][/autoit][autoit]
_QuickDraw_CreateSurface($hGui, 0, 0, 1, 1)
GUIDelete($hGui)$hGui = GUICreate("Gui", 1024, 550, -1, -1)
[/autoit]
_QuickDraw_CreateSurface($hGui, 0, 0, 1024, 550) -
was mir grad so einfällt
das mit mousegetleft oda so
das gibt nur zahlenwerte zurückt
wird das noch geändert? -
[EDIT]
Ich hab mal so eine kleine Liste erstellt, da ich die letzten Tage mit QD gearbeitet habe. Besonders eine Funktion für einen Textur-Ausschnitt vermisse ich stark. Lass dich nicht von der länge der Liste abschrecken, aber ich hatt mir da so ein paar Notizen gemacht was bei mir und den Testrechnern (4*XP-SP3(x86) - 2*Win7-x64) nicht so richtig läuft.
Aber weiter soToDo
- Die Maus-Funktion läuft bei mir auf 3 Testrechnern nicht richtig! (keine Positionsrückgabe)
- Die Texte sehen teilweise seltam aus.
- Das Darstellungsproblem bei manchen Texturengrössen bitte entfernen. (werden Farblos mit so komischen Streifen)
- Häufig bei png´s kommen diese komischen Probleme, muß deswegen eine Grafik in verschiedenen Grössen erstellen.
- Vollbild flimmert stark bei mir (50hz)
- Eine GDI+ Funktion wie:[autoit]_GDIPlus_GraphicsDrawImageRectRect[/autoit]irgendwie implentieren, für einen Textur-Ausschnitt aus einer Grafik.
- Und das gleiche für einen Kreis-Ausschnitt.
- Noch einige GDI Funktionen:[autoit]
_GDIPlus_ImageGetWidth, _GDIPlus_ImageGetHeight[/autoit] - Und vielleicht noch sowas wie: _GDIPlus_ImageGetPos
- Die schon angesprochenen Sprites vermisse ich auch.
- Child GUI´s ermölichen:
[autoit]
$MainGUI = GUICreate("Main-GUI", 800, 600, -1, -1)
$RenderGUI = GUICreate("", 640, 480, 10, 10, $WS_CHILD, $WS_EX_TOPMOST, $MainGUI)
_QuickDraw_CreateSurface($RenderGUI , 0, 0, 640, 480)
GUISetState() ; !Auf verschiedenen Rechnern unterschiedliche Ergebnisse
[/autoit] - Die schon von dir angesprochene Kopierfunktion für geladene Texturen oder Objekte.
- Ladegeschwindigkeit bei den Texturen ist teilweise (z.B. jpg) unzureichend.
- Und noch die von dir und Andy angesprochenen Grafik-Objekte realisieren.
- Und evenuell noch iwie einen Support um einfache GUI´s darstellen zu können (ohne Malen zu müssen )
Grüsse von Techmix!
P.S:
Du machst doch noch weiter, oder???? (Hoffentlich, ist nähmlich mal so richtig gut!!)