- PR -

VB2005 画面ハードコピー サイズ変更

1
投稿者投稿内容
furukawa
会議室デビュー日: 2007/01/17
投稿数: 14
投稿日時: 2007-01-17 14:24
Windows Xp, VB2005で開発中です。

フォームのハードコピーを取って、それを印刷するプログラムを作成中ですが、
ハードコピーのサイズが大きすぎて印刷用紙の途中で切れてしまいます。
ハードコピーをサイズ変更の仕方を教えてください。
下記は実際コーディングしたコードです。

--------------------------------------------------------------------
'フォームのイメージを取得する
Public Function CaptureControl(ByVal ctrl As Control) As Bitmap

Dim g As Graphics = ctrl.CreateGraphics()
Dim img As New Bitmap(ctrl.ClientRectangle.Width, _
ctrl.ClientRectangle.Height, g)
Dim memg As Graphics = Graphics.FromImage(img)
Dim dc1 As IntPtr = g.GetHdc()
Dim dc2 As IntPtr = memg.GetHdc()

BitBlt(dc2, 0, 0, img.Width, img.Height, dc1, 0, 0, SRCCOPY)
g.ReleaseHdc(dc1)
memg.ReleaseHdc(dc2)
memg.Dispose()
g.Dispose()
Return img

End Function
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2007-01-17 15:11
引用:

ハードコピーのサイズが大きすぎて印刷用紙の途中で切れてしまいます。
ハードコピーをサイズ変更の仕方を教えてください。


印刷時に希望の大きさでDrawすればよいです。

・例
コード:
    Private Sub _PrintDoc_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) _
        Handles _PrintDoc.PrintPage

        Dim _Bitmap As Bitmap ' 印刷するビットマップ

        With e
            Dim RateX As Single = CSng(.MarginBounds.Width / _Bitmap.Width)
            Dim RateY As Single = CSng(.MarginBounds.Height / _Bitmap.Height)
            ' 拡大・縮小ともに小さいほうの係数を採用
            Dim Rate As Single = Math.Min(RateX, RateY)

            Dim Rect As RectangleF = New RectangleF(0, 0, _Bitmap.Width * Rate, _Bitmap.Height * Rate)

            .Graphics.DrawImage(_Bitmap, Rect)
        End With

    End Sub


じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-01-17 15:20
引用:

furukawaさんの書き込み (2007-01-17 14:24) より:

Windows Xp, VB2005で開発中です。
(snip)
下記は実際コーディングしたコードです。


.NET Framework 2.0 であれば、System.Drawing.Graphics.CopyFromScreen メソッドを
使用された方が良いのではないでしょうか?

引用:

フォームのハードコピーを取って、それを印刷するプログラムを作成中ですが、ハードコピーのサイズが大きすぎて印刷用紙の途中で切れてしまいます。ハードコピーをサイズ変更の仕方を教えてください。


リファレンスで、Graphics.DrawImage メソッドのオーバーロードを参照してください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
furukawa
会議室デビュー日: 2007/01/17
投稿数: 14
投稿日時: 2007-01-17 16:14
まどかさん、じゃんぬねっとさん
無事にできました。
教えていただきありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)