重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【6/2終了】教えて!gooアプリ版配信終了

PrintDocumentでうまく印字ができません


VB2008を使っています。

PrintDocumentを使って画面を伝票に出力しようとしています。(以下のコード)


'品名,数量,単価,金額, 最大6行
For i = 0 To 5
If tbGyoIdArray(i).Text <> Nothing Then
e.Graphics.DrawString(tbShohinNameArray(i).Text, f1, Brushes.Black, 10, 150 + 20 * i)
e.Graphics.DrawString(tbSuryoArray(i).Text, f1, Brushes.Black, 100, 150 + 20 * i)
e.Graphics.DrawString(tbTankaArray(i).Text, f1, Brushes.Black, 250, 150 + 20 * i)
e.Graphics.DrawString(tbKingakuArray(i).Text, f1, Brushes.Black, 300, 150 + 20 * i)

End If

Next

ところが「DrawString」は引数で指定する開始位置から左詰めで印字するのですが、
数量,単価,金額は右詰めで印刷しないとならないわけです。

そこで、どなたか右詰めで印字する方法を教えて下さい。
もしできないとしたら、どんな方法があるでしょうか。

よろしくお願いします。

A 回答 (2件)

MeasureString()メソッドで印刷時のサイズを取得して、そのサイズでDrawString()の位置を補正します。



MeasureString()の使用例です。
' Set up string.
Dim measureString As String = "Measure String"
Dim stringFont As New Font("Arial", 16)

' Measure string.
Dim stringSize As New SizeF
stringSize = e.Graphics.MeasureString(measureString, stringFont)

' Draw rectangle representing size of string.
e.Graphics.DrawRectangle(New Pen(Color.Red, 1), 0.0F, 0.0F, stringSize.Width, stringSize.Height)

' Draw string to screen.
e.Graphics.DrawString(measureString, stringFont, Brushes.Black, New PointF(0, 0))
    • good
    • 0
この回答へのお礼

自己解決できました。
ご回答ありがとうございました。

StringFormatのAlignmentプロパティで「右詰め」フォーマットを設定する
ことで、解決できました。

Dim drawFormat As New StringFormat
drawFormat.Alignment = StringAlignment.Far

e.Graphics.DrawString(tbKingakuArray(i).Text, f1, Brushes.Black, 300, 150 + 20 * i,drawFormat)


いろいろありがとうございました。

お礼日時:2010/06/23 10:23

表示領域の終わりを示さないと、右揃えはできないはず。


まずドキュメントを読み、次にドキュメントを読み、さらにドキュメントを読んで、コードを書いて画像を出力してみた。

http://msdn.microsoft.com/en-us/library/21kdfbzs …

以下のURIにコードと、画像の結果を置く。
http://cid-b89cb784f5346675.office.live.com/brow …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!