Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Graphics.DrawString vs GraphicsPath.AddString
OhThereIsAPeanut
myCSharp.de - Member



Dabei seit:
Beiträge: 33

Themenstarter:

Graphics.DrawString vs GraphicsPath.AddString

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5.655
Herkunft: Leipzig

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
OhThereIsAPeanut
myCSharp.de - Member



Dabei seit:
Beiträge: 33

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
OhThereIsAPeanut
myCSharp.de - Member



Dabei seit:
Beiträge: 33

Themenstarter:

beantworten | zitieren | melden

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
Attachments
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers