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


見ざる聞かざる土居まさる  2008-04-16 04:43:43  No: 144666

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


やじゅ  2008-04-16 05:37:53  No: 144667

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


見ざる聞かざる土居まさる  2008-04-16 05:49:40  No: 144668

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


見ざる聞かざる土居まさる  2008-04-16 23:04:11  No: 144669

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


癒耶  2008-04-22 22:20:19  No: 144670

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


らすかる  2008-04-23 01:24:13  No: 144671

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加