Printing problem

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--------------------------------------------
 
A

Aristotelis Pitaridis

I was trying to print some information such a way that the user will be able
to move objects with the mouse on a form, and then I will use the contents
of the form in order to print the information. Does anyone knows how to
convert the contents of the form (including labels, textbox, etc...) to a
bitmap in order to send it to the printer?

Aristotelis
 
A

Aristotelis Pitaridis

Thanks JR. It works. The only problem is that the quality of the text is not
very good. Is there any way to improve the quality?

Aristotelis
 
A

Aristotelis Pitaridis

Sorry JR but I found an other problem. If an other window exists over the
form that I want to print, the area of the top level form will be print. I
think that this is an other problem problem.

Aristotelis
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top