2009-06-17 13 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

、あなたはこの方法テキストの下端の位置を取得することができます:

.TextAlignがTOPLEFTまたはTopCenterまたはTopRight、Labelコントロール缶内のテキストの下に設定されていると仮定すると、

​​

.GetHeightメソッドは、ラベルで使用されている現在のフォントの高さをピクセル単位で返します。
.TextAlignがMiddleまたはBottomの場合は、少し複雑な計算を行う必要があります。

この同じメソッドは、NumericUpDownコントロールでも機能します。

+0

のgetHeightは、フォントのベースラインの位置が、トップの位置を返しません。次の行Windozeのフォントはこのようにねじ込まれています。ここには簡単な答えはありません。 – dar7yl

+0

私はStewbobが自分の答えを下降させることに不満を持ち、いくつかの私の投稿を下降させて報復したことに気付きました。私はここでハイロードをしており、これを全面的な戦争にエスカレートしていません。 – dar7yl

+0

@ dar7yl ...うーん...あなたは誰ですか?あなたは私のポストへのコメントがありますが、私は最後のものを理解していませんか? – Stewbob

関連する問題