|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Printing problemI 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 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-------------------------------------------- "Aristotelis Pitaridis" <pitari***@hotmail.com> schreef in bericht news:1152559887.494996@athnrd02...Show quoteHide quote >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 > 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 Show quoteHide quote Ï "JR" <x.x@x.x.> Ýãñáøå óôï ìÞíõìá news:C4ysg.529756$dL5.12945535@phobos.telenet-ops.be... > > 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-------------------------------------------- > > "Aristotelis Pitaridis" <pitari***@hotmail.com> schreef in bericht > news:1152559887.494996@athnrd02... >>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 >> > > 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 Ï "Aristotelis Pitaridis" <pitari***@hotmail.com> Ýãñáøå óôï ìÞíõìá news:1152594518.879454@athnrd02...Show quoteHide quote > > 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 > > Ï "JR" <x.x@x.x.> Ýãñáøå óôï ìÞíõìá > news:C4ysg.529756$dL5.12945535@phobos.telenet-ops.be... >> >> 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-------------------------------------------- >> >> "Aristotelis Pitaridis" <pitari***@hotmail.com> schreef in bericht >> news:1152559887.494996@athnrd02... >>>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 >>> >> >> > > Can you get the form's graphic object and save it to a bitmap?
-- Show quoteHide quoteDennis in Houston "Aristotelis Pitaridis" wrote: > 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 > > > |
|||||||||||||||||||||||