Laden...

Eigene textBox: Korrekte Berechnung aber Versetzte Buchstaben beim Zeichnen

Erstellt von Animal21 vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.896 Views
A
Animal21 Themenstarter:in
144 Beiträge seit 2008
vor 13 Jahren
Eigene textBox: Korrekte Berechnung aber Versetzte Buchstaben beim Zeichnen

Hallo Leute,
beim Versuch meine eigene 'TextBox' zu schreiben (nicht von TextBox geerbt, sondern von UserControl) bin ich auf eine kleine Hürde gestoßen:

Hatte einige Probleme mit der korrekten Berechnung der Weite des Textes und habe hier auch einige Beiträge und Lösungen gefunden, folgende von 'Herbivore' habe ich verwendert:

MeasureString und Alternativen

Ich speichere die eingegebenen Chars in einer Liste, aus welcher sie dann beim zeichnen herausgelesen und vermessen werden...
Das Gute ist, zumindest theoretisch, da Herbivores Funktion die Minimalgrenzen berechnet, dass es keine Lücken geben sollte zwischen den Buchstaben...
Mein Problem ist nun, dass wie man im angehangenen Bild sieht, die Buchstaben nicht korrekt gezeichnet werden:
Die Graue Box ist die berechnete Fläche für die jeweiligen Chars, leider sind die etwas nach rechts verschoben.

Hab in meinem Code keinen Anlass für eine solche Differenz gefunden, daher frage ich mich, ob das evt mit der DrawString-Methode selbst zu tun hat? bzw dem übergebenen Rectangle...

PS: Die Pinkne Fläche ist selectierter Text...

mfg
Ani

Gelöschter Account
vor 13 Jahren

zuerst etwas allgemeines:
Verwende nicht mehr DrawString und Measurestring vom Graphix Objekt sondern verwende den TextRenderer.

und nun das spezielle:
Die Unterschiede sind viel zu groß.... zeig mal deinen Render-Code

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Animal21,

wenn du mit meiner Funktion die Breite des Buchstabens berechnet hast, hast du doch sowieso schon ein Bild des Buchstabens. Verwende eine Überladung von DrawImage, bei der zu Quell- und Zielrechteck angeben kannst, um diesen Buchstaben passgenau an die Zielposition zu zeichnen.

Allerdings wird das nicht schön aussehen, denn pixelmäßig gleiche Abstände wirken aufgrund der unterschiedlichen Form der Buchstaben optisch unterschiedlich. Andersherum ausgedrückt muss man je nach Form der Buchstaben unterschiedliche Abstände verwenden, damit die Abstände optisch gleich aussehen. Siehe z.B. Unterschneidung.

herbivore

A
Animal21 Themenstarter:in
144 Beiträge seit 2008
vor 13 Jahren

danke für die antworten...

@Herbivore:
sieht echt nich so schön aus, außerdem wirkt das als "bild" n bissl künstlich, also die buchstaben...

@JAck30lena
hab mal mit TextRenderer.DrawText(...) versucht un siehe da, die buchstaben werdfen nicht mehr eingerückt xD sieht super aus ^^

ty again

mfg
ani