Ellipse ohne Canvas zeichnen



  • Hallo,

    wie schon im Titel beschrieben würde ich gerne ohne Hilfe von Canvas eine Ellipse zeichen, also Pixel für Pixel selbst zeichnen. Wie man einen Kreis zeichnet, ist mir soweit klar, aber wie macht Canvas das bei einer Ellipse? Die ist ja eine Art zusammengestauchter Kreis.
    Hat das schonmal jemand probiert?

    greetz KN4CK3R



  • Hi,

    mit der WinAPI (ev. Brush und Pen setzen):

    Ellipse( GetDC(Form1->Handle), 100, 100, 164, 64 );
    

    mfg
    kpeter

    edit: war wohl zu schnell mit dem Lesen Pixel für Pixel also...

    hier ist eine Herleitung der Ellipsenformel :

    http://www.matheboard.de/archive/12974/thread.html



  • Nun ich glaube, das ist eine ehrgeizige Aufgabenstellung.

    nun du brauchst auch Canvas um die einzelnen Pixel zu zeichen, jedenfalls wenn du innerhalb BCB programmieren willst. Zur Konstruktion kann dir wahrscheinlich jedes Geometriehandbuch Hilfe leisten, oder das Mathe-Forum.

    Wenig Hilfe, aber das umsonst 😉
    Rudi



  • rudiM schrieb:

    nun du brauchst auch Canvas um die einzelnen Pixel zu zeichen, jedenfalls wenn du innerhalb BCB programmieren willst.

    Solange eine Zeichenfläche da ist, die ein Handle und damit ein handle of device context hat, geht es auch in der WinApi.
    Das ist mit einem Panel schon möglich.

    SetPixelV( GetDC(Form1->Handle), x, y, RGB( 255, 0, 0 ) );
    

    mfg
    kpeter



  • ja, da hab ich mich falsch ausgedrückt. Die Pixel setze ich schon per Canvas, nur möchte ich eben auf die Funktion zum Zeichnen der Ellipse verzichten.
    Auch hab ich noch vergessen, dass die Ellipse gefüllt sein sollte, also nicht nur die Randlinie.
    Ich werd mal weiter ausprobieren, danke schonmal für die Links.

    greetz KN4CK3R



  • Hallo

    Die Pixel setze ich schon per Canvas, nur möchte ich eben auf die Funktion zum Zeichnen der Ellipse verzichten.

    Das ist dann ein rein geometrisches Problem. Siehe also passendes Mathebuch oder -forum

    Auch hab ich noch vergessen, dass die Ellipse gefüllt sein sollte, also nicht nur die Randlinie.

    Dazu kannst du TCanvas::FloodFill benutzen. Ansonsten beim Zeichnen der Ellipse selber bereits die Innenfläche mitfüllen

    bis bald
    akari


Anmelden zum Antworten