Verwischen von Zeichen bei der Verwendung von TextOut verhindern bzw. korrigieren.



  • Hi

    Ich zeichne mit TextOut einen Text in ein TImage.
    Nun kommt es bei sehr kleinen Schriftgrößen und bestimmten Textsorten vor das manche Buchstaben "verwischen"
    Hier ein 100fach vergrößertes Beispiel:
    http://img323.imageshack.us/img323/8383/02av6.jpg
    Der eigentliche Farbwert des Textes ist 00FF00.
    Hier die tatsächlichen:
    http://img323.imageshack.us/img323/6941/01gl5.jpg
    Die rot markierten Bereiche hätte ich am liebsten überhaupt nicht.
    Den Bereich mit dem Farbwert 33FF33 hätte ich am liebsten auf den ursprünglichen Wert korriegiert weil ich später einen Rand um den Text ziehen will und mich dabei auf die Originalfarbe beziehe.

    Bei einer höheren Textgröße tauchen diese Fehler meistens nicht mehr auf.

    Die Frage ist jetzt ob man solche Fehler von vornherein ausschließen kann oder ob man sie später durch Berechnung eines Schwellenwertes rausrechnen kann.
    Bei zweiterem wäre ein Link zu einem Algorithmus sehr nett.
    Hier noch mein Quellcode:

    Image->Canvas->Font=Font;
     Image->Width=Image->Canvas->TextWidth(Edit1->Text)+2;
     Image->Height=Image->Canvas->TextHeight(Edit1->Text);
    
     Image->Canvas->Brush->Style=bsClear; //Unterschiedliche Styles zeigten keinerlei Unterschiede im Endergebnis
    
     Image->Canvas->TextOut(1,0, Edit1->Text);
    

    Ich bitte um eure Meinung.

    Gruß
    rean



  • Ursachenforschung zum "Verwischen" ist m.E. der beste Anfang:
    http://en.wikipedia.org/wiki/Antialiasing
    http://en.wikipedia.org/wiki/Aliasing

    Verwischen, sehr geil 😃
    Eine triviale, wenn auch vielleicht nicht ausreichende Lösung findest du nicht in der VCL sondern unter "Systemsteuerung"



  • 1. Passiert das nicht bei allen Buchstaben sondern bei der Schriftart aus bem Beispiel lediglich bei E, K und N.
    2. Habe ich AntiAliasing mal deaktiviert und das Ergbebnis ist das selbe.



  • rean schrieb:

    1. Passiert das nicht bei allen Buchstaben sondern bei der Schriftart aus bem Beispiel lediglich bei E, K und N.
    2. Habe ich AntiAliasing mal deaktiviert und das Ergbebnis ist das selbe.

    http://www.dafont.com/

    Nach Pixelfonts suchen, denn die brauchst du um Schriften ohne Antialingsbums darzustellen (zumindest in den Größen 6 - 11 Pixel).



  • Ich hab eine Lösung für mein Problem gefunden.
    Für die dies interessiert:
    Ich zeichne den Text zunächst in schwarz auf meine Zeichenfläche (die zuvor blank ist) dann prüfe ich jedes Pixel und färbe es wenn es über einem definierten Schwellenwert liegt weiß, ansonsten in der Textfarbe.
    Dadurch, dass ich den Text zunächst schwarz zeichne muss ich mir nicht für jede Farbe einen Schwellenwert ausrechnen sondern kann immer von dem selben schwarzen Farbton ausgehen.
    Das klappt für sämtliche Schriftarten und lesbare Schriftgrößen wunderbar.

    Trotzdem danke für eure Hilfe.

    Gruß
    rean


Anmelden zum Antworten