2013-04-04 12 views
8

私はGraphicsPath.AddString()関数を使用していますが、テキストの周りに少しスペースを入れてテキストを描画します。どのようにパディングなしで文字列を描画する任意のアイデア、テキストのパスのみ?パディングなしで文字列を描画する方法

私のコードこのようなものです:何が起こっている

GraphicsPath gp = new GraphicsPath(); 

gp.AddString(text, font.FontFamily, (int)font.Style, font.Size, 
    boundsRectangle, format); 

g.DrawPath(pen, gp); 
+2

StringFormatパラメータのFormatFlagsには何を設定しましたか?応答のために – plinth

+0

おかげで、StringFromatは_format = StringFormat.GenericDefaultです。いくつかのことがフラグの問題を解決することができますか? – MHMr

+0

http://stackoverflow.com/questions/118686/measurestring-pads-the-text-on-the-left-and-the-right –

答えて

2

することは、おそらくドキュメントから、)(Graphics.MeasureStringを使用しているボンネットの下にある:

GDI +少量を追加(1/6 em)を表示された各文字列の各端に割り当てます。この1/6 emは、オーバーハングエンド(斜体 'f'など)のグリフを許可します。また、GDI +にグリッドフィッティングの拡張に役立つ少量の余裕を与えます。 DrawStringの既定のアクションは、隣接する実行を表示するにはあなたに対して動作します

まず既定のStringFormatは、各出力の各端に余分な1/6全角を追加します。 第2に、グリッドの取り付け幅が設計よりも小さい場合、文字列は までemまで縮められます。

MeasureStringとDrawStringは、常に文字体系> StringFormat(GenericTypographic)に基づいてStringFormatを渡します。 Graphics TextRenderingHintをTextRenderingHintAntiAliasに設定​​します。このレンダリング方法>は、グリッドフィッティングの必要性を避けるためにアンチエイリアスとサブピクセルグリフの配置を使用し、したがって本質的に解像度に依存しません。

正しいStringFormatを使用してこれを修正できるように見えます。

関連する問題