- - PR -
PadLeft メソッドを使って全角文字列幅をそろえたい
1
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-12-11 13:27
いつも参考にさせていただいております。 以下の環境でWindowsのソフトを開発しています。
Windows XP Pro Framework 2.0 Visual Basic 2005 Expres Edition 昨日、桁数の違った数字に対して1桁位置をそろえることを教わり、固定ピッチ フォントに変更して 見事にそろえることができましたが、文字数の違った日本語全角文字列も文字列幅をPadLeft メソッド でそろえることができるのでしょうか。Windows XP からは「MS ゴシック」等で固定ピッチとなるように 記されていますが(http://support.microsoft.com/kb/417434/ja)うまくいきません。 下にコードを記述しますので、よろしくお願いいたします。
追記1:(10," "c)の" "は全角スペースです。 追記2:(10," "c)の c は意味がわからず、人まねでつけました。 件名の修正 [ メッセージ編集済み 編集者: 未記入 編集日時 2007-12-11 13:32 ] | ||||||||||||||||
|
投稿日時: 2007-12-11 13:49
空白も文字ですから揃えることができると考えられます。 が、
Windows XP では 1.5 の倍数のフォント サイズを使わなくてはいけません。 印刷の場合は、それだけでなくドライバ依存という要素もあるため万全にはできません。
PadRight メソッド? 印字開始位置の基準は左端ではないのでしょうか? PadRight メソッドでは何ら意味がないように思えます。 それと件名は PadLeft メソッドになっています。 どちらなのでしょうか?
'c' サフィックスを文字列の後ろにつけると Unicode 1 文字を表す System.Char 型になります。 http://msdn2.microsoft.com/ja-jp/library/dzy06xhf(VS.80).aspx _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2007-12-11 14:28
早速ありがとうございます。それと昨日は数字の桁そろえ、大変助かりました。
そうであれば少し面倒ですが、日本語全角文字の混じった複数項目をつなぎ合わせる行は、 次のように記述する方法でもよいのでしょうか?(一般的なのでしょうか) S1 = "あああああああ" : S2 = "お" e.Graphics.DrawString(S1.PadRight(10," "c) , f, Brushes.Black, x , y ) e.Graphics.DrawString(S2.PadRight(2," "c), f, Brushes.Black, x + 60 , y )
PadLeft メソッドです。(件名が間違いです。) これは「あああ」の記述幅を10文字として、続く「お」の記載位置をそろえたのです。 'c' サフィックスを文字列の後ろにつけると Unicode 1 文字を表す に関して勉強します。 ありがとうございました。 | ||||||||||||||||
|
投稿日時: 2007-12-11 15:17
繋げるなら文字列を結合して DrawString メソッドでしょう。 位置が決まっていて単に横並びになっているなら現状の方法でしょう。
??? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2007-12-11 16:16
じゃんぬねっとさん。返答ありがとうございます。
とおっしゃっている意味を次のように理解しました。 1.縦列をそろえることなく、単につなげるなら文字結合してDrawString メソッドを・・ 2.列の位置を縦にもそろえたいなら、面倒でも最後に例示した方法がよい。 今回の場合は縦の位置そろえも必要なもので2.で記述しようと思っています。 件名のPadLeftメソッドが間違いで、PadRightが正しいのです。再三間違えてすみません。 |
1