| |

VB.NET - FortgeschritteneRe: FontMetrik Problem | |  | Autor: LaLue | Datum: 24.02.16 16:15 |
| Hallo Kalli,
Mein Problem ist deinem ähnlich. Ich schreibe ein kleines Textverarbeitsprogramm und kann in der Symbolleiste die FontSizes, FontStyles und FontGrössen angeben. Der Text, der Zeichen für Zeichen auf dem Keyboard eingegeben wird, kann mehrzeilig sein und muss dann auf die BaseLine ausgerichtet werden. Ich habe es so gelöst, dass ich
1. den Zeilenumbruch ermittele
2. den höchsten Ascent der Zeichen in dieser Zeile feststelle
3. die y-Position der einzelnen Zeichen ergibt dann sich aus der Differenz des höchsten Ascent aller Zeichen und dem Ascent des aktuellen Zeichens.
Aber genau hier entsteht das Problem. Möglicherweise ist das in deiner Version behoben (ich arbeite mit einer älteren).
Ich habe inzwischen eine andere Lösung verfolgt und zwar mit einer Scherung des Regular Fonts, also so (auf das nötigste reduziert):
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim g As Graphics
Dim f As Font
Dim m As New Matrix
g = Me.PictureBox1.CreateGraphics
f = New Font("Arial", 10, FontStyle.Regular)
g.DrawString("a", f, Brushes.Black, New Point(0, 0))
m.Shear(-0.3, 0)
g.Transform = m
g.DrawString("a", f, Brushes.Black, New Point(15, 0))
End Sub
Interessant ist nun, dass bei gewissen Fontgrössen genau derselbe Fehler auftritt, obwohl bei y=0 , also in der y-Richtung keine Verschiebung auftreten dürfte.
Wie bereits bemerkt, tritt die Verschiebung auch auch ohne Scherung innerhalb derselben FontFamily auf, in der also der Regular-Font und der Italic-Font die selbe Metrik haben. Ich denke inzwischen, dass hier ein Fehler von VB oder C vorliegt. Eine wirklich gute Lösung habe ich noch nicht. |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevCommand 4.0 
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|