空白文字があると中央寄せ印字ができない。


見ざる聞かざる土居まさる  2008-04-15 19:43:43  No: 144666  IP: 192.*.*.*

vb2005 + printdocumentで印字プログラムを作成しています。
表題の件ですが、例えば"ABC"の文字で
"xxyABCxyx"(xは半角空白、yは全角空白)と
"ABC"は
  LineAlignment = StringAlignment.Center
にしておけば
同じ位置に印字できると思ったのですが
空白入り文字は中央に印字されず実際に指定した位置よりも
右の位置に印字されてしまいます。
原因と対応方法をご教授くだされば幸いです。

編集 削除
やじゅ  2008-04-15 20:37:53  No: 144667  IP: 192.*.*.*

全角を半角スペースに置換後に、Trimをかけるとか

編集 削除
見ざる聞かざる土居まさる  2008-04-15 20:49:40  No: 144668  IP: 192.*.*.*

やじゅ さん回答有難うございます。
>全角を半角スペースに置換後に、Trimをかけるとか
今開発している印字プログラムですが、
印字位置を意図的に調整するため意図的に空白をいれている
データもあるためTrimをかけるのはまずいです。
いったいこの現象はなんなのでしょうか
もしかVB2005のバグでしょうか

編集 削除
見ざる聞かざる土居まさる  2008-04-16 14:04:11  No: 144669  IP: 192.*.*.*

追加報告です。
  LineAlignment = StringAlignment.Near
にした場合は問題はありません。
中央寄せにしたときに印字位置がずれるという現象が
発生しているみたいです。

編集 削除
癒耶  2008-04-22 13:20:19  No: 144670  IP: 192.*.*.*

空白も含めてテキストですから、
空白付きで中央にならないのは仕様ではないでしょうか。
Nearで中央っぽく見えているのは空白で調整した結果かな?
というか空白で位置調整している時点で問題ありな気もしますが・・・
空白の幅は環境によって違ってきたりするので
出来れば空白以外で位置を調整するように
変えていく方が良いかと思われます。

編集 削除
らすかる  2008-04-22 16:24:13  No: 144671  IP: 192.*.*.*

自信はないのですが・・・多分この仕様関連での問題かなぁと思います。
http://msdn2.microsoft.com/ja-jp/library/system.drawing.stringformatflags(VS.80).aspx
>MeasureTrailingSpaces
>各行の行末に空白を含めます。既定では、MeasureString メソッドから返される外接四角形によって、各行末の空白が除外されます。各行末の空白を計測に含める場合はこのフラグを設定します。 
Word2000とかでも同じようになりますよね?

編集 削除