2009-05-04 15 views
1

Ich habe seit einiger Zeit mit dem Text-Rendering in GDI + gekämpft. Wir generieren dynamisch Bilder von Schlagzeilen, aber in der Bibliothek scheint eine Menge zu sein. Ich kann die Schriftart, die Schriftgröße und einige andere Dinge einstellen, aber ich kann die Zeilenhöhe oder den Buchstabenabstand nicht kontrollieren.Text-Rendering-Steuerelement in GDI +

Ich habe meine eigene Klasse erstellt, die ein generiertes Textbild erstellt, die einzelnen Textzeilen ausschneidet (die Einstellungen für jede Schriftart werden manuell in Einstellungsdateien kodiert) und setzt sie mit der gewünschten Zeilenhöhe zusammen. Ich konnte das gleiche Problem für den Briefabstand jedoch nicht lösen.

Hat jemand eine Lösung für diese oder eine Empfehlung einer Bibliothek (OS oder kommerzielle), die das löst?

Antwort

2

Ich weiß nicht, ob dies auf Ihre Lösung zutrifft, aber in der Vergangenheit, als ich etwas anspruchsvolleren Text rendern musste, und ich wollte eine ziemlich große Flexibilität in der Art, wie es gerendert werden würde verwendet diese Bibliothek:

http://www.terrainformatica.com/htmlayout/main.whtm

es ist nicht Open Source, aber es ist kostenlos ...

, alternativ in dem Spielraum I Bitmap-Schriften ausgiebig genutzt haben - wenn Sie Informationen speichern aus wie Zeichenabstand, etc. kann genauso aussehen wie ein TTF, aber Sie verlieren die Fähigkeit, es viel zu skalieren, ohne Einführung cing einige anständige Artefakte. Um ein besseres Gefühl für diesen Ansatz zu bekommen, hier ist ein Werkzeug für den Aufbau der Schriftart:

http://www.angelcode.com/products/bmfont/

Hoffentlich einer von denen gibt Ihnen etwas Hilfe - entweder werden Sie über Charakter steuern Abstand und Zeilenhöhe, aber sie haben auch ihre Grenzen.

+0

Danke für die Antwort. Der zweite Link könnte genau das sein, wonach ich suche (ich werde es noch ein bisschen genauer anschauen, bevor ich die Antwort als akzeptiert akzeptiere :). Die erste habe ich allerdings nicht ganz verstanden. Vielleicht bin ich einfach nur dumm, aber wie ich verstanden habe, war das ein System zum Rendern von HTML aus dem Browser? –

+0

Das ist richtig, HTMLayout ist eine HTML-Rendering-Komponente, aber Sie können es nur in einen Offscreen-Puffer rendern und verwenden ... Auf diese Weise prototype Sie Ihren Text ist HTML mit dem gedruckten Text etwas, das Sie suchen und ersetzen mit der Text, den Sie tatsächlich anzeigen möchten. Es gibt Ihnen mehr Flexibilität, da Sie es über CSS tun können und sehr spezifische Kontrolle darüber haben, wie es angezeigt wird. – Mark

+0

Eine andere Sache, wenn Sie die Bitmap-Schrift Pfad gehen, und Sie entscheiden, dass Sie Skalierung benötigen, gibt es eine Technik namens Alpha-Tested Vergrößerung, die wirklich gut funktioniert - hier ist das Whitepaper von den Valve Jungs drauf: http : //www.valvesoftware.com/publications/2007/SIGGRAPH2007_AlphaTestedMagnification.pdf Mit dieser Technik bleiben die Schriftkanten beim Schrumpfen und Skalieren schön und klar. – Mark