Laden...

Graphics.DrawString vs GraphicsPath.AddString

Erstellt von OhThereIsAPeanut vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.727 Views
O
OhThereIsAPeanut Themenstarter:in
33 Beiträge seit 2013
vor 10 Jahren
Graphics.DrawString vs GraphicsPath.AddString

Hallo Leute,

ich habe folgendes Problem. Ich würde gerne alle grafischen Objekte per GraphicsPath zeichnen lassen und verschieben. Auch Text.

Das habe ich nun probiert und musste feststellen, dass Path.AddString() sehr hässliche und fast unlesbare Ergebnisse für kleine Schriftgrößen liefert. Mit Graphics.DrawString() ist das allerdings kein Problem.
Kennt jemand von euch einen "Hack" der dieses Problem behebt? Mit den ganzen Rendering Methoden und Anti-Aliasing habe ich bereits rumgespielt. Leider ohne zufriedenstellende Ergebnisse.

Danke euch und beste Grüße
OhThereIsAPeanut

5.658 Beiträge seit 2006
vor 10 Jahren

Hi OhThereIsAPeanut,

eigentlich gibt es doch keinen Grund, den Text zu einem Path hinzuzufügen. Das ist relativ unperformant und, wie du selbst schreibst, führt es es zu schlechteren Ergebnissen. Warum verwendest du nicht einfach die DrawString-Methode? Damit kannst du doch auch die Position des Textes ändern, indem du einen PointF übergibst.

Christian

Weeks of programming can save you hours of planning

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo OhThereIsAPeanut,

der Grund für die schlechte Qualität, die sich auch bei Vergrößerung zeigt, liegt daran, dass der Text beim Hinzufügen zu einem GraphicsPath eben in einen Pfad (mit einer begrenzten Anzahl von Stützpunkten) umgewandelt wird. Diese Umwandlung lässt sich nicht vermeiden. Daher führt bei stärkeren Vergrößerungen oder Verkleinerungen kein Weg an DrawString/DrawText vorbei. Damit sollte es - wie MrSparkle indirekt schreibt - keine Probleme geben.

herbivore

O
OhThereIsAPeanut Themenstarter:in
33 Beiträge seit 2013
vor 10 Jahren

Alles klar. Vielen Dank für eure Antworten.
Ich habe mir das fast schon gedacht. Werde das also mit DrawString() implementieren.

Beste Grüße
OhThereIsAPeanut

O
OhThereIsAPeanut Themenstarter:in
33 Beiträge seit 2013
vor 10 Jahren

hey freunde,

ich habe jetzt nochmal mit den Strings rumgespielt.
Leider stosse ich immer noch auf folgendes Problem.
Texte in dieser größe sind kaum zu lesen. Wie bekomme ich es hin, dass er die schrift nur mit einem pixel breite zeichnet?

danke euch.

lg
OhThereIsAPeanut

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo OhThereIsAPeanut,

die Linenstärke hängt von der Font-Definition ab und davon, ob der Font Bold dargestellt werden soll. Letzteres kannst du über die Font.Bold-Eigenschaft prüfen. Wenn der Font nicht Bold ist, hilft es wohl nur, einen anderen Font zu verwenden.

herbivore