2009-06-17 9 views

Odpowiedz

13

// uczynić tekst linii odniesienia w układzie współrzędnych (pt.X, pt.Y)

Font myFont = Label1.Font; 
FontFamily ff = myFont.FontFamily; 

float lineSpace = ff.GetLineSpacing(myFont.Style); 
float ascent = ff.GetCellAscent(myFont.Style); 
float baseline = myFont.GetHeight(ev.Graphics) * ascent/lineSpace; 

PointF renderPt = new PointF(pt.X, pt.Y - baseline)); 
ev.Graphics.DrawString("Render this string", myFont, textBrush, renderPt); 
2

Do sterowania Label, można uzyskać pozycję w dolnej części tekstu w ten sposób:

Zakładając .TextAlign jest ustawiony na topLeft lub TopCenter lub TopRight, na dole tekstu w kontroli etykieta może można znaleźć za pomocą tej metody:

dim btmOfText as single 
btmOfText = Label1.Font.GetHeight + Label1.Top 

Metoda .GetHeight zwraca wysokość w pikselach bieżącej czcionki używanej przez etykietę.
Jeśli .TextAlign jest środkowy lub dolny, należy wykonać nieco bardziej złożone obliczenia.

Ta sama metoda będzie również działać z formantem NumericUpDown.

+0

GetHeight nie zwraca pozycji wyjściowej czcionki, ale położenie górnej części następna linia. Czcionki windoze są wkręcane w ten sposób. Nie ma tu prostej odpowiedzi. – dar7yl

+0

Zauważyłem, że Stewbob był niezadowolony z mojego odrzucenia jego odpowiedzi, i odwzajemnił się, obniżając liczbę moich stanowisk. Wybieram tutaj wysoką drogę i nie eskaluję tego do wojny totalnej. – dar7yl

+0

@ dar7yl ... Umm ... kim jesteś? Widzę, że masz komentarze do mojego wpisu, ale nie rozumiem tego ostatniego? – Stewbob

Powiązane problemy