ただいま修行中...

ソフトウェア開発において、勉強中で悪戦苦闘の日々

DrawStringにおける取り消し線

2009-06-19 21:06:07 | C#
C#GraphicsDrawStringというメソッドがあります。

文字を描画するメソッドになります。

Fontの設定で、FontStyleStrikeoutというものがあり、取り消し線を描画することができます。それ以外にも太字やイタリックなどもできます。

通常はこれで問題ありません。ただし、前後に空白を入れた場合の動作が、半角目と全角文字で異なります。画像のようになってしまいます。

この画像の外の赤枠は、Graphics.MeasureStringを利用して取得した文字のサイズを基に描画しています。

色々と調べましたが、はっきりとした原因は、GDI+のDLLまで調べることができなかったので、わかりません。

ここからは推測になります。

StringFormatに、FormatFlagsがあり、StringFormatFlags.MeasureTrailingSpacesを加味しないで、取り消し線を描画しているのではないかと思われます。

StringFormatFlags.MeasureTrailingSpacesとは、行末の空白を含めるという設定になります。GDIでサンプルを作成したところ、特に問題なかったので、GDI+からの問題のように思います。

ちなみに、Excel2007で検証したところ、セルの文字はGDIのように描画されて、オートシェイプの文字は、GDI+のように描画されることがわかりました。


最新の画像もっと見る

コメントを投稿