In einen Dialog zeichnen / Antialiasing mit der GDI



  • Hallo,
    ich habe zwei Fragen:
    1. Wie ist es möglich bei einem Programm, das lediglich aus einer Dialogressorce als Oberfläche besteht, etwas zu zeichnen? Ich möchte dabei nur Standardfunktionen wie DrawEllipse oder DrawText verwenden und mit diesen eben (wie in ein normales Fenster) in den Dialog zeichnen.

    2. Gibt es eine Möglichkeit, geometrische Figuren wie Kreise mit Kantenglättung zu zeichnen? Mit der GDI+ ist das durch setzen eines Flags möglich, doch ich möchte für mein Programm nur die Win32-API verwenden (und somit die GDI statt GDI+).

    Ich würde mich über hilfreiche Antworten sehr freuen 🙂

    ph4nt0m



  • 2. Gibt es nen haufen algos für ... musst de einfach mal suchen.
    1. Versuch doch einfach mal zu zeichnen 😉 (OnPaint und OnEraseBackground)



  • Erstmal vielen Dank für deine Antwort!

    Was genau meinst du aber mit OnPaint? Hört sich irgendwie nach einer OOP GUI-lib an wie Qt!? 😮

    Da ich ja mit reinem C und der WinAPI programmiere, müsste es ja eine entsprechende Nachricht geben, die man abfängt, denn bei einem Dialog wird die Zeichenarbeit ja eigentlich komplett von Windows übernommen.
    Ich probiers jetzt einfach mal mit WM_PAINT, aber ich kann mir nicht vorstellen, dass das funktionieren wird. Schließlich gibt es doch keine "DefDlgProc" oder? In meinen Codevorlagen für einen Dialog wird jedenfalls nichts direkt an Windows weitergeleitet, sondern einfach TRUE oder FALSE returned.

    ph4nt0m



  • ph4nt0m schrieb:

    Was genau meinst du aber mit OnPaint? Hört sich irgendwie nach einer OOP GUI-lib an wie Qt!? 😮

    Jo (D)Evil meint MFC...das ist ne OOP-Lib...(btw: ne Alte :p )

    ph4nt0m schrieb:

    Da ich ja mit reinem C und der WinAPI programmiere, müsste es ja eine entsprechende Nachricht geben, die man abfängt, denn bei einem Dialog wird die Zeichenarbeit ja eigentlich komplett von Windows übernommen.
    Ich probiers jetzt einfach mal mit WM_PAINT, aber ich kann mir nicht vorstellen, dass das funktionieren wird. Schließlich gibt es doch keine "DefDlgProc" oder? In meinen Codevorlagen für einen Dialog wird jedenfalls nichts direkt an Windows weitergeleitet, sondern einfach TRUE oder FALSE returned.
    ph4nt0m

    - WM_PAINT
    - WM_NCPAINT
    - WM_ERASEBKGND

    Anti Aliasing gibts so in der GDI nicht, da musst du dir, wie (D)Evil schon sagte, Algorithmen suchen; zum Beispiel den:
    Click-Me!



  • Arg jop stimmt... hatte gedacht das hier MFC wäre... bin nen bissel durchn Wind 😉

    Aber sind wie CodeFinder schon sagte WM_PAINT und WM_ERASEBKGND ...



  • Danke!
    Mit WM_PAINT funktioniert tatsächlich alles tadellos.
    Deshalb habe ich mich nun einmal um den Algorithmus gekümmert 🙂

    Nachdem ich den Quelltext einfach mal stumpf kopiert habe, meckert mein Compiler:

    error C3861: 'DrawPixel': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden

    😮
    Soweit ich weiß, ist das eine Standardfunktion der WinAPI und sollte doch durch die Anweisung

    #include <windows.h>

    hinlänglich bekannt sein!? 😞

    ph4nt0m

    EDIT: 😞 *schäm* Das heißt ja bei der WinAPI SetPixel


Log in to reply