フォームの画面コピー
- 題名: フォームの画面コピー
- 著者: トマトスープ
- 日時: 2012/02/27 19:08:15
- ID: 29953
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: フォームの画面コピー
- 著者: 魔界の仮面弁士
- 日時: 2012/02/27 20:52:42
- ID: 29954
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: フォームの画面コピー
- 著者: トマトスープ
- 日時: 2012/03/01 16:32:35
- ID: 30021
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
お世話になっております。
現在、フォームの画面コピーをとり
その画面を印刷するPGを作成しているのですが
いくつか問題点があり躓いております。
こちらコードです。
Public Sub PrintForm(ByVal frm As Form)
'フォームのイメージを取得する
memoryImage = CaptureControl(frm)
'フォームのイメージを印刷する
Dim PrintDocument1 As New System.Drawing.Printing.PrintDocument
AddHandler PrintDocument1.PrintPage, _
AddressOf PrintDocument1_PrintPage
PrintDocument1.Print()
memoryImage.Dispose()
End Sub
<System.Runtime.InteropServices.DllImport("gdi32.dll")> _
Private Shared Function BitBlt(ByVal hdcDest As IntPtr, _
ByVal nXDest As Integer, ByVal nYDest As Integer, _
ByVal nWidth As Integer, ByVal nHeight As Integer, _
ByVal hdcSrc As IntPtr, _
ByVal nXSrc As Integer, ByVal nYSrc As Integer, _
ByVal dwRop As Integer) As Boolean
End Function
Private Const SRCCOPY As Integer = &HCC0020
'フォームのイメージを取得する
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
'PrintDocument1のPrintPageイベントハンドラ
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs)
e.Graphics.DrawImage(memoryImage, 0, 0)
End Sub
Private Sub Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
PrintForm(Me)
End Sub
フォームロード時に開いているフォームの画面コピーを
とって印刷するようになっています。
そして問題点ですが・・・印刷物の上下左右の余白の
設定の方法がわかりません。
もしお分かりになる方いらっしゃいましたら
教えて頂ければと思います。
よろしくお願いします。