2009-06-17 29 views

回答

13

//渲染座標(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

Label控件,你可以得到的文本這樣的底部位置:

假設.TextAlign設置移動到左上角或TopCenter或TopRight,在Label控件文本的底部可通過這種方法發現:

​​

的.GetHeight方法返回的高度,在由標籤所使用的當前字體的像素。
如果.TextAlign是Middle或Bottom,那麼你需要做一個稍微複雜的計算。

這種方法也適用於NumericUpDown控件。

+0

GETHEIGHT等到不返回的字體基線的位置,但對頂部的位置下一行。 Windoze字體以這種方式擰緊。這裏沒有簡單的答案。 – dar7yl 2011-11-24 09:59:11