J
JR
Someone have givven me this code.
It convert the screen completeet into a bitmap and that print the bitmap
from memory
'--------------------------------------start
code--------------------------------------------
Private Declare Function BitBlt Lib "gdi32.dll" Alias "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 System.Int32) As Long
Dim memoryImage As Bitmap
Private Sub CaptureScreen()
Dim mygraphics As Graphics = Me.CreateGraphics()
Dim s As Size = Me.Size
memoryImage = New Bitmap(s.Width, s.Height, mygraphics)
Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
Dim dc1 As IntPtr = mygraphics.GetHdc
Dim dc2 As IntPtr = memoryGraphics.GetHdc
BitBlt(dc2, 0, 0, Me.ClientRectangle.Width, _
Me.ClientRectangle.Height, dc1, 0, 0, 13369376)
mygraphics.ReleaseHdc(dc1)
memoryGraphics.ReleaseHdc(dc2)
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e
As System.Drawing.Printing.PrintPageEventArgs) Handles
PrintDocument1.PrintPage
e.Graphics.DrawImage(memoryImage, 0, 0,
PrintDocument1.DefaultPageSettings.Bounds.Width,
PrintDocument1.DefaultPageSettings.Bounds.Height)
End Sub
Private Sub mnuPrint_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles mnuPrint.Click
Dim dlg As New PrintPreviewDialog
Dim ps As New PrintDialog
Me.BackColor = Color.White
Me.Refresh()
Application.DoEvents()
CaptureScreen()
With ps
PrintDocument1.DefaultPageSettings.Landscape = True
..PrinterSettings = PrintDocument1.PrinterSettings
ps.ShowDialog()
PrintDocument1.PrinterSettings = .PrinterSettings
End With
With dlg
..Document = PrintDocument1
..ShowDialog()
End With
Me.BackColor = Color.FromKnownColor(KnownColor.Control)
End Sub
'--------------------------------------End
code--------------------------------------------
It convert the screen completeet into a bitmap and that print the bitmap
from memory
'--------------------------------------start
code--------------------------------------------
Private Declare Function BitBlt Lib "gdi32.dll" Alias "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 System.Int32) As Long
Dim memoryImage As Bitmap
Private Sub CaptureScreen()
Dim mygraphics As Graphics = Me.CreateGraphics()
Dim s As Size = Me.Size
memoryImage = New Bitmap(s.Width, s.Height, mygraphics)
Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
Dim dc1 As IntPtr = mygraphics.GetHdc
Dim dc2 As IntPtr = memoryGraphics.GetHdc
BitBlt(dc2, 0, 0, Me.ClientRectangle.Width, _
Me.ClientRectangle.Height, dc1, 0, 0, 13369376)
mygraphics.ReleaseHdc(dc1)
memoryGraphics.ReleaseHdc(dc2)
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e
As System.Drawing.Printing.PrintPageEventArgs) Handles
PrintDocument1.PrintPage
e.Graphics.DrawImage(memoryImage, 0, 0,
PrintDocument1.DefaultPageSettings.Bounds.Width,
PrintDocument1.DefaultPageSettings.Bounds.Height)
End Sub
Private Sub mnuPrint_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles mnuPrint.Click
Dim dlg As New PrintPreviewDialog
Dim ps As New PrintDialog
Me.BackColor = Color.White
Me.Refresh()
Application.DoEvents()
CaptureScreen()
With ps
PrintDocument1.DefaultPageSettings.Landscape = True
..PrinterSettings = PrintDocument1.PrinterSettings
ps.ShowDialog()
PrintDocument1.PrinterSettings = .PrinterSettings
End With
With dlg
..Document = PrintDocument1
..ShowDialog()
End With
Me.BackColor = Color.FromKnownColor(KnownColor.Control)
End Sub
'--------------------------------------End
code--------------------------------------------