GDE - Graphics Drawing Engine (schneller als GDI+) (UDF)

  • Hi! ("Der schon wieder, hört das auch mal auf?!" - "Nö.")

    Eigentlich wollte Ich ja nur mit GDI eine Linie auf eine GUI zeichnen und bin dabei wieder mal komplett übers Ziel hinausgeschossen, indem ich einfach meine eigene Grafik UDF geschrieben habe.

    Vorteile gegen GDI+ (für mich):

    • Kurze Funktionsnamen
    • Funzt unter Win2000
    • Pen und Brush fallen weg, denn Sie sind in jeder Funktion mit drin
    • Schneller

    Bisher sind mir keinerlei Bugs bekannt.
    So was und noch mehr kann man dann damit machen - VERALTET-:
    [Blockierte Grafik: http://url.redio.de/gde.png]

    Hier mal der UDF Index:

    Spoiler anzeigen
    [autoit]

    ;
    ; This UDF is made for learning how Graphics in AutoIt v.3 work.
    ; The content of this work is licensed under Creative Commons license.
    ; Autor: campweb
    ; Last Change: 18.8.2011
    ;
    ; #INDEX# =========================================================================================
    ; Functions:
    ;
    ;_GDE_Create()
    ;_GDE_Line()
    ;_GDE_Line()
    ;_GDE_Rect()
    ;_GDE_Ellipse()
    ;_GDE_Pie()
    ;_GDE_Pie()
    ;_GDE_Point()
    ;_GDE_Pixel()
    ;_GDE_Bezier()
    ;_GDE_Dispose()
    ;_GDE_Triangle()
    ;_GDE_CustomRect()
    ;_GDE_Update()
    ;
    ; =================================================================================================

    [/autoit]

    Die UDF gibt natürlich mit den ausführlichsten Funktionsheadern die ich je verfasst habe (SuEbo sei Dank).
    Im Anhang findet sich die UDF und ein Beispielskript (Zu sehen im Screenshot).

    Den Speedvergleich zu GDI+ siehst du unten ↓ in einem anderen Post .

    Changelog:
    - 20.8.2011 _GDE_Update() hinzugefügt
    - 18.8.2011 _GDE_CustomRect hinzugefügt
    - 18.8.2011 Ellipsenbug behoben
    - 18.8.2011 _GDE_Triangle hinzugefügt
    - 18.8.2011 UDF erstellt

    Ankündigungen:
    - _GDE_PercentageBarDiagram
    - _GDE_3D_Dice
    - _GDE_3D_Pyramide

    Ergänzungen werden immer gerne gesehen!

    So long, campweb

  • Eigentlich nicht schlecht, für einfache Sachen bestimmt gut geeignet.
    GDI+ ist natürlich um einiges mächtiger, aber bei den ganzen Funktionen überlege ich mir immer zweimal ob ich es nutze.

    Wie sieht es denn mit dem Zeichnen von ner eigenen GUI aus? Wäre doch als Speed-test nicht schlecht oder?

  • Naja, die interne GUI nur als Container nutzen und dann die Elemente(Buttons etc.) von der UDF zeichnen lassen.
    Wäre das damit möglich? Ich hatte da z.B. an Hover Effekte und so'n Zeug gedacht, der Standard-Krams sieht so öde aus.

  • Also das mit den Buttons kann Ich machen. Aber das ist glaube ich als Speedtest nicht geeignet, zu umständlich.
    Ich werde auf jeden Fall demnächst Skripte mit der GDE releasen, vlt. mach ich das mit dem Buttons ja...

    MfG, campweb

  • So, nun wolte ich mal eine Geschwindigkeitsvergelich.
    Im Rennen:
    - Die TestGUI aus dem Screenshot für GDE
    - Eine TesGUI die eine simple Ellipse mit GDI+ zeichnet

    Das Ergebnis nach 100 Durchläufen für jeden:
    GDE zeichnet diese komplexe Konstellation innerhalb von 0,96 Millisekunden, wobie GDI+ für nur eine Ellipse ohne Farbe oder Brush 10,24 Millisekunden benötigt.
    Hier noch mal ein Durchgang:

    [Blockierte Grafik: http://url.redio.de/gde.png] [Blockierte Grafik: http://url.redio.de/gdi.png]

    Den Kampf gewint also eindeutig GDE :party:


    MfG, campweb

  • Ein paar Bugs beseitigt, _GDE_Triangle hinzugefügt.

    Immernoch kein Feedback, bei 19 Downloads ?

    MfG, campweb

    Einmal editiert, zuletzt von campweb (18. August 2011 um 13:11)

  • Hey
    Habs mir zwar nicht runtergeladen, aber:
    1. Zitat Hilfedatei:

    Zitat

    Bemerkungen
    Es ist _GDIPlus_Startup aufzurufen, bevor ein GDI+ Objekt erstellt wird. GDI+ läuft nur auf Microsoft Windows NT 4.0 SP6, Windows 2000, Windows 98, Windows ME und Windows XP.


    2. Hast du die GDI+ Werte auch mit BitBlt geguck? Das macht nämlich jeder "der es kann" :D .
    MfG

    Nur keine Hektik - das Leben ist stressig genug

  • 1. Bei meinem PC nicht. Mehr kann ich da nicht sagen. Ist win2000 auf NT Basis

    MfG, campweb

  • 1. Bei meinem PC nicht. Mehr kann ich da nicht sagen. Ist win2000 auf NT Basis

    MfG, campweb


    die gdiplus.dll läuft auch unter win2000, ist aber nicht automatisch dabei. Download hier: http://www.microsoft.com/download/en/details.aspx?DisplayLang=en&id=18909
    GDI32 ist für einfache Formen gut, aber komplexe Effekte und das Laden von Bildern muss man manuell erledigen.
    PS: GDI+ ist so langsam, weil alle Operationen auf der CPU ausgeführt werden (zumindest bis Win2003, bei vista und 7 ist das glaube ich etwas verbessert) GDI wird auf der Grafikkarte verarbeitet.

  • Bei mir eghts auch mit der gedownloadeten DLL nicht, es zeigt einfach nichts an. Also bei GDI+

    MfG, campweb

  • Funktioniert soweit unter W7 32 Bit, allerdings funktioniert das Füllen von Ellipsen nicht, es fehlt der Parameter $BackColor in der GDE.au3:

    So funktionierte auch das Füllen der Ellipsen:

    [autoit]


    Func _GDE_Ellipse($hGraphics, $Left, $Top, $Width, $Height, $Color, $Size = 1, $BackColor = $GUI_GR_NOBKCOLOR)
    GUICtrlSetGraphic($hGraphics, $GUI_GR_PENSIZE, $Size)
    GUICtrlSetGraphic($hGraphics, $GUI_GR_COLOR, $Color, $BackColor)
    GUICtrlSetGraphic($hGraphics, $GUI_GR_ELLIPSE, $Left, $Top, $Width, $Height)
    GUICtrlSetGraphic($hGraphics, $GUI_GR_CLOSE)
    EndFunc

    [/autoit]


    GDI+ Besipiel as der Hilfe zur Funktion "GUICtrlSetGraphic " funktioniert bei mir auch recht zügig... :)

    In jedem Fall werde ich wohl jetzt etwas mit Grafiken herumspielen :) daher Danke für die UDF

    mfg
    Axel

    There exist 10 different kind of people on earth.
    Those who understand binary, and those who don't.

  • Also - Ich bin ehrlich gesagt nicht sonderlich "Baff" davon - Sollte ich ?
    Nein - Man hat nur Nachteile gegenüber GDI+ !
    Man kann nicht updaten,
    man kann dies nicht,
    man kann jenes nicht ...

    Dennoch - Ganz nette Idee, trotzdem sonderlich unnütz !

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • ahe Danke, da ist wohl was verloren gegangen 8|

    Baff sollst du ja auch nicht sein :) Das wird ja hier auch nur die Grundlage für ne win2000 3D Engine (ws nun wirklich glaub ich nur für mich relevant ist)

    MfG, campweb

  • Win2000 3D ?
    Entweder:
    Spinnst du (nicht bös gemeint)
    oder:
    Du übertreibst und hast irgendwelches derbstes Gras geraucht - Das Zeug will ich auch :P

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • - win200 3D ist kein Wahnsinn, sondern recht einfach zu realisieren, dauert aber
    - Du kaufst dir ein Beutel Gras und rauchst die Verpackung

    MfG, campweb

  • xD - Danke für den Tipp :rofl:
    Nee mal im Ernst, wenn du BF2 - Render simulieren willst, dann ist deine Engine ein Furz !

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Es wird hauptsächlich auf Nodes basieren, die miteels der _GDE_3D_... befehle verarbeitet werden.
    Das wird noch, ich brauch bloß Zeit, und die hab ich momentan noch nicht.

    MfG, campweb

  • Es wächst und wächst. Mit _GDE_CostumRect ist es nun auch möglich Polygone zu zeichnen.

    MfG, campweb