vb2005 + printdocumentで印字プログラムを作成しています。
表題の件ですが、例えば"ABC"の文字で
"xxyABCxyx"(xは半角空白、yは全角空白)と
"ABC"は
LineAlignment = StringAlignment.Center
にしておけば
同じ位置に印字できると思ったのですが
空白入り文字は中央に印字されず実際に指定した位置よりも
右の位置に印字されてしまいます。
原因と対応方法をご教授くだされば幸いです。
全角を半角スペースに置換後に、Trimをかけるとか
編集 削除やじゅ さん回答有難うございます。
>全角を半角スペースに置換後に、Trimをかけるとか
今開発している印字プログラムですが、
印字位置を意図的に調整するため意図的に空白をいれている
データもあるためTrimをかけるのはまずいです。
いったいこの現象はなんなのでしょうか
もしかVB2005のバグでしょうか
追加報告です。
LineAlignment = StringAlignment.Near
にした場合は問題はありません。
中央寄せにしたときに印字位置がずれるという現象が
発生しているみたいです。
空白も含めてテキストですから、
空白付きで中央にならないのは仕様ではないでしょうか。
Nearで中央っぽく見えているのは空白で調整した結果かな?
というか空白で位置調整している時点で問題ありな気もしますが・・・
空白の幅は環境によって違ってきたりするので
出来れば空白以外で位置を調整するように
変えていく方が良いかと思われます。
自信はないのですが・・・多分この仕様関連での問題かなぁと思います。
http://msdn2.microsoft.com/ja-jp/library/system.drawing.stringformatflags(VS.80).aspx
>MeasureTrailingSpaces
>各行の行末に空白を含めます。既定では、MeasureString メソッドから返される外接四角形によって、各行末の空白が除外されます。各行末の空白を計測に含める場合はこのフラグを設定します。
Word2000とかでも同じようになりますよね?