DOBON.NET DOBON.NETプログラミング掲示板過去ログ

画像印刷のサイズ指定について

環境/言語:[(Windows XP]
分類:[.NET]

画像印刷のロジックをどぼんの過去ログを参考にやっているのですがサイズ
指定をどこにいれればいいのか分かりません。
画像のサイズは常に固定です。
以下のサンプル例では用紙いっぱいに印刷されてしまいます。
どなたかお分かりの方よろしくご教授お願いします。

http://dobon.net/vb/dotnet/graphics/printdocument.html

[VB.NET]
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
'PrintDocumentオブジェクトの作成
Dim pd As New System.Drawing.Printing.PrintDocument
'PrintPageイベントハンドラの追加
AddHandler pd.PrintPage, AddressOf pd_PrintPage
'印刷を開始する
pd.Print()
End Sub

Private Sub pd_PrintPage(ByVal sender As Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs)
'画像を読み込む
Dim img As Image = Image.FromFile("test.bmp")
'画像を描画する
e.Graphics.DrawImage(img, e.MarginBounds)
'次のページがないことを通知する
e.HasMorePages = False
'後始末をする
img.Dispose()
End Sub
2005/01/26(Wed) 13:44:28 編集(投稿者)

#回答ではありません。

> 以下のサンプル例では用紙いっぱいに印刷されてしまいます。

 Tips に書かれている文章はきちんと読むようにしましょう。
 先の Tips には
> 次の例はフォームにあるボタン(Button1)をクリックすると、ページ余白の内側の部分いっぱいに画像'test.bmp'を表示させるものです。
と記載されています。
#意図して行っているものを「されてしまう」と呼ばわりするは如何なものかと思いますがそれはさておき。

> ページ余白の内側の部分はPrintPageEventArgs.MarginBoundsプロパティでそれぞれ取得できます。
> DrawImageやDrawStringメソッドなどにより描画を行います。Graphics.DrawImageメソッドで画像を描画する方法につきましては、「画像ファイルを表示する」を参考にしてください。
ともあります。
 その上で

> サイズ指定をどこにいれればいいのか分かりません。

と仰っているのでしょうか?

> '画像を描画する
> e.Graphics.DrawImage(img, e.MarginBounds)

の箇所でサイズの指定も行っているらしいとは露ほども思われませんでしたか?
#もし全くかすりもしなかったのであれば、真剣に考えていなかったかプログラミングには向いていないかのいずれかでしょう。


 サンプルはあくまでサンプルです。そのまま使うのではなくコードの意味を理解するようにしましょう。ヘルプ( MSDN )を当ればクラスやメソッドの説明は出てくるのですから。
 因みに(ここで使われている) DrawImage メソッドについて調べると、次のような記述を見つけることができます。

Graphics.DrawImage メソッド (Image, Rectangle)
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdrawinggraphicsclassdrawimagetopic5.asp

<追記>
 一度 DrawImage オーバーロードの一覧を眺めてみてください。サイズ指定できるものも見つかるかと。
#違いが判らないものについては実際に使用してみると解ると思います。

Graphics.DrawImage メソッド
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdrawinggraphicsclassdrawimagetopic.asp
</追記>



 以下余談になりますが引用についての私見です。
 投稿されたコードは Tips のサンプルコードそのままですよね。リンク先を見れば判るものなので引用する必要はなかったかと。
 また過去の投稿を拝見する限り、ふろふろさんはレスを付けるときに全文引用されてますよね。必要ない箇所については引用せずに済ませて頂けると嬉しいです。
#携帯から見るときに無意味な全文引用があると辛いので(^_^;)<とか言う割に長文投稿の多い私(汗)
■No8707に返信(深山さんの記事)
> 2005/01/26(Wed) 13:44:28 編集(投稿者)
>
> #回答ではありません。
>
>>以下のサンプル例では用紙いっぱいに印刷されてしまいます。
>
>  Tips に書かれている文章はきちんと読むようにしましょう。
>  先の Tips には
>>次の例はフォームにあるボタン(Button1)をクリックすると、ページ余白の内側の部分いっぱいに画像'test.bmp'を表示させるものです。
> と記載されています。
> #意図して行っているものを「されてしまう」と呼ばわりするは如何なものかと思いますがそれはさておき。
>
>>ページ余白の内側の部分はPrintPageEventArgs.MarginBoundsプロパティでそれぞれ取得できます。
>>DrawImageやDrawStringメソッドなどにより描画を行います。Graphics.DrawImageメソッドで画像を描画する方法につきましては、「画像ファイルを表示する」を参考にしてください。
> ともあります。
>  その上で
>
>>サイズ指定をどこにいれればいいのか分かりません。
>
> と仰っているのでしょうか?
>
>>'画像を描画する
>>e.Graphics.DrawImage(img, e.MarginBounds)
>
> の箇所でサイズの指定も行っているらしいとは露ほども思われませんでしたか?
> #もし全くかすりもしなかったのであれば、真剣に考えていなかったかプログラミングには向いていないかのいずれかでしょう。
>
>
>  サンプルはあくまでサンプルです。そのまま使うのではなくコードの意味を理解するようにしましょう。ヘルプ( MSDN )を当ればクラスやメソッドの説明は出てくるのですから。
>  因みに(ここで使われている) DrawImage メソッドについて調べると、次のような記述を見つけることができます。
>
> Graphics.DrawImage メソッド (Image, Rectangle)
> http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdrawinggraphicsclassdrawimagetopic5.asp
>
> <追記>
>  一度 DrawImage オーバーロードの一覧を眺めてみてください。サイズ指定できるものも見つかるかと。
> #違いが判らないものについては実際に使用してみると解ると思います。
>
> Graphics.DrawImage メソッド
> http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdrawinggraphicsclassdrawimagetopic.asp
> </追記>
>
>
>
>  以下余談になりますが引用についての私見です。
>  投稿されたコードは Tips のサンプルコードそのままですよね。リンク先を見れば判るものなので引用する必要はなかったかと。
>  また過去の投稿を拝見する限り、ふろふろさんはレスを付けるときに全文引用されてますよね。必要ない箇所については引用せずに済ませて頂けると嬉しいです。
> #携帯から見るときに無意味な全文引用があると辛いので(^_^;)<とか言う割に長文投稿の多い私(汗)

深山 様
ご丁重なご返事有難うございました。
ご指導の通り、DrawImage オーバーロードの一覧のところをよく調べてみると
パラメータの指定方法が理解できました。
印字位置、サイズの指定の方法もうまくいけました。
有難うございました。
私はDOS時代のBASICをかじった程度で、思うところあって大そうなプログラムに
挑戦しています従ってHELPで見ても今一つ内容が理解できずついついここに頼りながら進めています。
仰せのご指摘肝に命じ以降もう少し良く調べてみたいと思います。
今後とも宜しくお願いします。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板