トップ回答者
PrintDocument にて数字の印刷位置を右位置にて揃えたい。

質問
-
Visual Basic 2008 にて開発中です。
例えば、
dim xxQty as long
xxQty = 1234
e.Graphics.DrawString(xxQty, New Font("MS 明朝", 10), Brushes.Black, 10, 20)
xxQty = 123
e.Graphics.DrawString(xxQty, New Font("MS 明朝", 10), Brushes.Black, 10, 20)
ですと左から10mm 上から20mmの位置に印刷されますが、
1234
123
と左揃えで印字されます。
それを右揃えで印刷する事は可能でしょうか?
1234
123
の様にしたいのですが、ご伝授願いたく宜しくお願い致します。
数字の桁数はランダムに変わります。
回答
-
MeasureString は初めて使用しますが、サンプルが有りましたらご伝授願いたく宜しくお願い致します。
そう言うときは検索してみましょう。
http://www.google.com/search?hl=ja&num=50&q=MeasureString+VB.NET&lr=lang_ja
又、String型に変換するとありますが、私の出した数字のサンプルは整数ですが、
VB.NET では String が必要な引数に Integer や Single といった型の変数を渡しても、勝手に ToString メソッドを呼び出すような処理になります。(厳密には違うかもしれませんが、イメージとしてこう書いています)
実際には小数点の入った数字(単価等)も存在します。それでも問題ないでしょうか?
問題ないかどうかは、まず確かめてみる、あるいは調べてみましょう。
基本的にこのフォーラムは「サンプル見せろ」ですぐ見せてもらえるほどには甘くありません。
「なぜか」まで書いておくと良いと思います。
例えば、「答え」を渡すだけだとそれを丸々コピーして済ませてしまって、その人のためにならない(調べる力・解決する力が身につかない)ことになり、今後も何かある度にフォーラムを頼ってしまい、自分でコードを書けないことになることを危惧しており、できるだけ自分で調べて欲しいといったことですとか。
単に「甘くありません」だと、余所で聞くだけになるかも。(人によっては、理由を書いても余所に聞きに行くこともあるかもしれませんが、それを言ったらきりがないので)
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマーク fuji-tochigi 2009年7月27日 0:49
すべての返信
-
外池と申します。まず、お断りですが、long型の数値は、明示的にstring型に変換されることをお奨めします。以下、string型に変換されているものとしてご説明します。
DrawStringする前に、印刷したい文字列を使ってMeasureStringします。MeasureStringは、DrawStringの予行演習のようなメソッドでして、文字列がどのような大きさになるかを予め把握することができます。印刷で右揃えする目標の位置からMeasureStringで得られた巾を減算して、その値をDrawStringで使ってやってください。
印刷したい文字列ごとにMeasureStringとDrawStringをペアにして使うことになります。
(ホームページを再開しました) -
外池です。
GraphicsクラスのMeasureStringメソッドでドキュメントを調べれば、すぐにサンプルは見つかります。ご自身でお調べください。
String型へ変換するために、ToStringメソッドというものが存在します。整数型でも、浮動小数点型でも、ToStringメソッドは存在しますので、これも、ドキュメントで調べてください。
単純に右に揃えるのではなく、小数点の位置で揃えるとなると、また、別の工夫が必要ですが、これも、一度、ご自身で考えてみえください。
基本的にこのフォーラムは「サンプル見せろ」ですぐ見せてもらえるほどには甘くありません。
(ホームページを再開しました) -
MeasureString は初めて使用しますが、サンプルが有りましたらご伝授願いたく宜しくお願い致します。
そう言うときは検索してみましょう。
http://www.google.com/search?hl=ja&num=50&q=MeasureString+VB.NET&lr=lang_ja
又、String型に変換するとありますが、私の出した数字のサンプルは整数ですが、
VB.NET では String が必要な引数に Integer や Single といった型の変数を渡しても、勝手に ToString メソッドを呼び出すような処理になります。(厳密には違うかもしれませんが、イメージとしてこう書いています)
実際には小数点の入った数字(単価等)も存在します。それでも問題ないでしょうか?
問題ないかどうかは、まず確かめてみる、あるいは調べてみましょう。
基本的にこのフォーラムは「サンプル見せろ」ですぐ見せてもらえるほどには甘くありません。
「なぜか」まで書いておくと良いと思います。
例えば、「答え」を渡すだけだとそれを丸々コピーして済ませてしまって、その人のためにならない(調べる力・解決する力が身につかない)ことになり、今後も何かある度にフォーラムを頼ってしまい、自分でコードを書けないことになることを危惧しており、できるだけ自分で調べて欲しいといったことですとか。
単に「甘くありません」だと、余所で聞くだけになるかも。(人によっては、理由を書いても余所に聞きに行くこともあるかもしれませんが、それを言ったらきりがないので)
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマーク fuji-tochigi 2009年7月27日 0:49