3

テキストのベースラインと C# のラベルの下枠との間の正確な距離を取得したいと考えています。テキストの下に線を引きたいので、これが必要です(下線付きのフォントはテキストに非常にタイト/近いため、使用したくありません)。

これが私の試みです:

//This is placed in the custom label class
int dy = (int)((ClientRectangle.Height - Font.GetHeight())/2);

しかし正確ではありません。dy は約 3 を返し、ラベルに描画された線はテキストのベースラインから離れすぎています。

4

1 に答える 1

3

描画ハンドラーで、カスタム ラベル クラス内にいると仮定して、ラベルのテキスト ベースラインを取得します。

Font myFont = this.Font;
FontFamily ff = myFont.FontFamily;

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

ここにクレジットが入ります。

于 2013-04-18T15:00:20.463 に答える