2

文字列の最初の文字の左/上を使用するGraphics.DrawString(... myPoint) と、myPointになります。

DrawString を win32 SetTextAlign と組み合わせてテキストの原点を設定できます TA_LEFT|TA_BASELINEか、または .NET に相当するものはありますか?

(100,100) に Rectangle を描画し、(100, 100) に文字列を描画する場合、文字列を四角形の上に配置します (左上隅の内側ではなく)。

4

1 に答える 1

2

これを行う組み込みの方法はないようです (StringFormat を受け取り、その LineAlignment プロパティで指定する DrawString() のオーバーロードを呼び出しても、提供する四角形十分高さの場合、テキストを下揃えにするだけです)。 )。StringAlignment.Far

ただし、自分で計算を実行し、それに応じてY座標を変更することはできますPointF。たとえば、 FontクラスのHeightプロパティを使用できます。

yourPoint.Y -= yourFont.Height;
yourGraphics.DrawString(yourText, yourFont, yourBrush, yourPoint);

上記のコードは、実際にはベースラインの配置を実装していないことに注意してください (グリフ全体が の元の座標の上に立つことになりますyourPoint.Y)。真のベースライン アラインメントでは、 のような文字の「テール」部分がそのポイントより下にあるp必要があります。y次のような、より複雑なもので実装できます。

FontFamily fontFamily = yourFont.FontFamily;
FontStyle fontStyle = yourFont.Style;
yourPoint.Y -= fontFamily.GetCellAscent(fontStyle) * yourFont.Size
               / fontFamily.GetEmHeight(fontStyle);
于 2012-11-05T11:12:23.840 に答える