Linie zeichnen



  • Hallo,

    Wenn ich mit den normalen WinAPI-Funktionen eine Linie zeichne, bekommt diese immer "Treppen". Liegt das an der geringen Auflösung? Wenn ja, wie kann ich diese verstellen?

    Ich möchte gerne solche Linien wie in Word zeichnen können. Brauche ich dazu sowas wie einen "Glättungsalgorithums" ?

    Danke im vorraus

    Raphael

    PS: Bitte möglichst schnell antworten, ich bräuchte das morgen



  • Original erstellt von darkpenguin:
    Wenn ich mit den normalen WinAPI-Funktionen eine Linie zeichne, bekommt diese immer "Treppen". Liegt das an der geringen Auflösung?

    Eine Linie auf deinem Bildschirm hat IMMER "Treppen". Wie stark du diese siehst hängt tatsächlich mit der Auflösung zusammen. Wie du diese änderst? Klick rechts auf das Desktop, wähle "Eigenschaften", dann die Registerkarte "Einstellungen" und wähle dann deine Auflösung.



  • Hallo!

    Eine Linie muss nicht immer Treppen haben!

    Es gibt Kantenglättungsalgorihmen!
    Es gibt 2 Wege die du einschlagen kannst:

    1. Den ganzen Bildschirm glätten! Ich weis nicht ob es da schon Hardwareunterstützende Sachen unter WinAPI gibt, ich kenne es nur aus Direct X.
    Sie sind so aufgebaut, dass für jeden Pixel ein Durchschnitt zwischen seinem Eigenem Farbwert, und den 4 Darumliegenden Pixel die neue Farbe ergeben, wobei natürlich der Pixel der berechnet werden soll ein bischen mehr gewichtet wird.

    2. Nur die Linie glätten. Dabei tritt aber das Problem auf, dass du diese Linie an den Rändern "Echt Transparent" machst.

    Ich würde dir aber unter WinAPI abraten solche Sachen zu machen falls es keine Hardwareunterstützenden befehle gibt. Es dauert relativ lange solche Sachen mit reinen Softwarealgorithmen zu berechenen, (wenn dann mit Direct X).

    PS.: Ich habe nur einen PII 266Mhz. und kann das daher auf keinen Fall mit WinAPI erledigen. W*****einlich würde man auf einem 2.5Ghz nichts mehr merken.
    Es ist aber trotzdem ein sehr hoher berechnungsaufwand.



  • Original erstellt von <Jürgen>:
    Eine Linie muss nicht immer Treppen haben!

    Natürlich muss sie das! Zeig mir mal ne Linie (keine Vielfache von 45°), die ohne Treppen auskommt. Ich bin sehr gespannt... :p



  • Es gibt sehrwohl Kantenglättungsverfahren!

    Such einmal im internet nach dem Begif "Anti-Aliasing".
    Ich hab da schon einige Bilder gefunden.

    Anit-Aliasing kann man sich so vorstellen:
    Zuerst wird die Linie berechnet. Dann wird geschaut, zu wieviel Prozent ein Pixel anteil an der Linie hat. Bei 100 % Anteil ist der Pixel voll schwarz, bei weniger Anteil nimmt man eine Graustufe zwischen Weis und Schwarz.
    Dadurch merkt man bei einer Aufloesung von 1024*786 auf einem 17 Zoll Monitor keine Streppen mehr (selbest bei sehr geringer Steigung).



  • Das ist mir alles schon klar. Nur entstehen dabei trotzdem Treppen.

    Zitat von mir:

    Wie stark du diese siehst hängt tatsächlich mit der Auflösung zusammen.

    Das war alles, was ich gesagt habe. Klar, dass man um so weniger Treppen sieht je höher die Auflösung ist.



  • Toll WebFritzi anstelle altkluge kommentare vom stapel zu lassen (die ohnehin jedem schon vorher klar waren) solltest du lieber mal was nützliches posten so wie jürgen es getan hat.



  • @<your_name>: Es gibt tatsächlich Leute, denen das nicht klar ist! Im VCL-Forum gibts jemanden (<Omega-X> ), der daran glaubt, dass man ein Tausendstel eines Pixels auf dem Bildschirm darstellen kann. Soviel dazu...

    BTW: Machst du hier eigentlich was anderes als klugzuscheißen? 😮



  • WebFritzi du nervst langsam. 🙄



  • Original erstellt von <🙄>:
    WebFritzi du nervst langsam. 🙄

    Gleichfalls!



  • Gleichfalls!

    Danke gleichfalls! 🙂



  • Original erstellt von <🙄>:
    Danke

    Bitte. 🙂



  • Hallo WebFritzi!

    Ich wollte hier keinen Aufstand gegegen dich erzeugen!
    Tut leid.

    Aber etwas von vorher müssen wir noch klären:

    Zitat von WebFritzi:

    Wie stark du diese siehst hängt tatsächlich mit der Auflösung zusammen.

    Diese Aussage ist nach meiner Meinung nicht ganz richtig! Ich weis aus eigener Programmiererfahrung, dass bei gleicher Aufloesung sehr grosse Unterschiede bei der Qualitiät einer Linie bezogen auf ihre Treppeneffekte auftreten koennen.
    Es macht schon einen grossen Unterschied (bei gleicher Aufloesung) ob eine Linie mit einem guten Kantenglättungsalgorithmus gezeichnet wird, oder ob sie ganz normal wie eine gewöhnlich "Breshenham's" Linie aussieht.

    Eine hoehere Auflösung verbessert natürlich das Erscheinungsbild, nur schaut dann eine Line mit einem guten Kantenglättungsalgorithmus dann immer noch besser aus, als eine ohne.

    Hoffe auf weiters guten Informationsaustausch!!! 🙂

    Jürgen!



  • Original erstellt von <Jürgen>:
    Eine hoehere Auflösung verbessert natürlich das Erscheinungsbild, nur schaut dann eine Line mit einem guten Kantenglättungsalgorithmus dann immer noch besser aus, als eine ohne.

    Richtig! 🙂 Ich meinte auch ein und dieselbe Linie (ob mit oder ohne Kantenglättung). Ist ja klar, dass die besser aussieht, wenn die Auflösung höher ist.


Anmelden zum Antworten