|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Printing using marginsbut the margins are not acted upon. What I am I doing wrong? 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) memoryGraphics.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, s) End Sub Private Sub printDocument1_PrintPage(ByVal sender As System.Object, _ ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles printDocument1.PrintPage Dim margins As New Margins(0, 0, 600, 0) printDocument1.DefaultPageSettings.Margins = margins e.Graphics.DrawImage(memoryImage, 0, 0) End Sub tm,
You didn't say which version of the framework you are using. For 1.x you will need to compensate for the 'hard margins' on the printer by PInvoking GetDeviceCaps to get the margins. Also you won't be able to print except for inside those margins as the printer isn't capable of printing there. Except for some very high end printers most aren't capable of printing to the edge of the paper. You can look for GetHardMargins in this newsgroup or in microsoft.public.dotnet.framework.drawing to find some code to get the actual printer margin values. If you are using FW 2.0 you can use the properties of the PrintDocument to find the margins. Ron Allen Show quoteHide quote "tm" <tb***@cwnet.com> wrote in message news:%23OdhplRKGHA.648@TK2MSFTNGP14.phx.gbl... >I am trying to print a form using the following code, everything works fine > but the margins are not acted upon. What I am I doing wrong? > > > > 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) > memoryGraphics.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, > s) > End Sub > > > > Private Sub printDocument1_PrintPage(ByVal sender As System.Object, _ > ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles > printDocument1.PrintPage > > Dim margins As New Margins(0, 0, 600, 0) > printDocument1.DefaultPageSettings.Margins = margins > e.Graphics.DrawImage(memoryImage, 0, 0) > > End Sub > > > Ron,
I am using Framework 2.0 I have tried searching "GetHardMargins " with no luck. If I add the following to my sub printDocument1_PrintPage I do see my margins settings, but this just proves that I can set and read back the PageSetupDialog1 information. It seems that the info is not getting back to the printer. What ties the PageSetupDialog to the system default printer? With PageSetupDialog1 Dim leftMargin As Single = .PageSettings.Margins.Left Dim rightMargin As Single = .PageSettings.Margins.Right Dim topMargin As Single = .PageSettings.Margins.Top Dim BottomMargin As Single = .PageSettings.Margins.Bottom End With tom You can get the printable page size from the PrintPageEventArgs.PageBounds
which is passed to the PrintPage Event. -- Show quoteHide quoteDennis in Houston "tm" wrote: > Ron, > > I am using Framework 2.0 > > I have tried searching "GetHardMargins " with no luck. > If I add the following to my sub printDocument1_PrintPage > I do see my margins settings, but this just proves that I can > set and read back the PageSetupDialog1 information. It > seems that the info is not getting back to the printer. > What ties the PageSetupDialog to the system default printer? > > With PageSetupDialog1 > > Dim leftMargin As Single = .PageSettings.Margins.Left > > Dim rightMargin As Single = .PageSettings.Margins.Right > > Dim topMargin As Single = .PageSettings.Margins.Top > > Dim BottomMargin As Single = .PageSettings.Margins.Bottom > > End With > > > > tom > > > Dennis,
I capture the image in the CaptureScreen sub. What I want to do is use Margins to begin printing 6 inches down from the top. But the default printer seems not to see the new margins I set in the printDocument1 event and continus to print at the top. If you have any suggestions of what I am doing wrong I would appreciate your feed back. tom 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) memoryGraphics.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, s) End Sub Private Sub printDocument1_PrintPage(ByVal sender As System.Object, _ ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles _ printDocument1.PrintPage Dim margins As New Margins(0, 0, 600, 0) printDocument1.DefaultPageSettings.Margins = margins e.Graphics.DrawImage(memoryImage, 0, 0) End Sub You are drawing to the page graphics object and you need to use the point for
the drawing to start. If you want the drawing to be 6 inches from the top of the paper and 2 inches from the left side of the paper, use e.Graphics.DrawImage(memoryImage, 200, 600). The margins have nothing to do with it. -- Show quoteHide quoteDennis in Houston "tm" wrote: > Dennis, > > I capture the image in the CaptureScreen sub. > > What I want to do is use Margins to begin printing > 6 inches down from the top. But the default printer > seems not to see the new margins I set in the > printDocument1 event and continus to print > at the top. > > If you have any suggestions of what I am doing > wrong I would appreciate your feed back. > > tom > > > 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) > memoryGraphics.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, s) > End Sub > > > Private Sub printDocument1_PrintPage(ByVal sender As System.Object, _ > ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles _ > printDocument1.PrintPage > > Dim margins As New Margins(0, 0, 600, 0) > printDocument1.DefaultPageSettings.Margins = margins > e.Graphics.DrawImage(memoryImage, 0, 0) > > End Sub > > > Thanks Dennis, I have been working on this for a week.
Now that I can print at the bottom I have another question, is it possible to do two CaptureScreen() and send one two print at the top and the other to print at the bottom. Or prevent the form feed from ejecting the paper which would allow printing on top then print at bottom then eject the paper. tom Show quoteHide quote "Dennis" <Den***@discussions.microsoft.com> wrote in message news:50DCC4F3-180C-44BC-8577-D0D71ACEA898@microsoft.com... > You are drawing to the page graphics object and you need to use the point > for > the drawing to start. If you want the drawing to be 6 inches from the top > of > the paper and 2 inches from the left side of the paper, use > > e.Graphics.DrawImage(memoryImage, 200, 600). > > The margins have nothing to do with it. > > > -- > Dennis in Houston > > > "tm" wrote: > >> Dennis, >> >> I capture the image in the CaptureScreen sub. >> >> What I want to do is use Margins to begin printing >> 6 inches down from the top. But the default printer >> seems not to see the new margins I set in the >> printDocument1 event and continus to print >> at the top. >> >> If you have any suggestions of what I am doing >> wrong I would appreciate your feed back. >> >> tom >> >> >> 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) >> memoryGraphics.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, >> s) >> End Sub >> >> >> Private Sub printDocument1_PrintPage(ByVal sender As System.Object, _ >> ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles _ >> printDocument1.PrintPage >> >> Dim margins As New Margins(0, 0, 600, 0) >> printDocument1.DefaultPageSettings.Margins = margins >> e.Graphics.DrawImage(memoryImage, 0, 0) >> >> End Sub >> >> >> You can print as many images as you want wherever you want, even overlapping
so long as you do it before exiting the routine. If you want to change pages, just set the PrintPageEventArgs.HasMorePages = True and the PrintPages sub will be called again. You can use a static variable in the sub to keep track of which page you are on. Dennis in Houston Show quoteHide quote "tm" wrote: > Thanks Dennis, I have been working on this for a week. > > Now that I can print at the bottom I have another question, > is it possible to do two CaptureScreen() and send one two > print at the top and the other to print at the bottom. > > Or prevent the form feed from ejecting the paper which would > allow printing on top then print at bottom then eject the paper. > > tom > > > > > > "Dennis" <Den***@discussions.microsoft.com> wrote in message > news:50DCC4F3-180C-44BC-8577-D0D71ACEA898@microsoft.com... > > You are drawing to the page graphics object and you need to use the point > > for > > the drawing to start. If you want the drawing to be 6 inches from the top > > of > > the paper and 2 inches from the left side of the paper, use > > > > e.Graphics.DrawImage(memoryImage, 200, 600). > > > > The margins have nothing to do with it. > > > > > > -- > > Dennis in Houston > > > > > > "tm" wrote: > > > >> Dennis, > >> > >> I capture the image in the CaptureScreen sub. > >> > >> What I want to do is use Margins to begin printing > >> 6 inches down from the top. But the default printer > >> seems not to see the new margins I set in the > >> printDocument1 event and continus to print > >> at the top. > >> > >> If you have any suggestions of what I am doing > >> wrong I would appreciate your feed back. > >> > >> tom > >> > >> > >> 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) > >> memoryGraphics.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, > >> s) > >> End Sub > >> > >> > >> Private Sub printDocument1_PrintPage(ByVal sender As System.Object, _ > >> ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles _ > >> printDocument1.PrintPage > >> > >> Dim margins As New Margins(0, 0, 600, 0) > >> printDocument1.DefaultPageSettings.Margins = margins > >> e.Graphics.DrawImage(memoryImage, 0, 0) > >> > >> End Sub > >> > >> > >> > > >
Subclassed Textbox OnLeave Overrides
StreamWriter and BinaryWriter (same problem better explained) StreamWriter and BinaryWriter Dynamic controls, menuitems, windowlist Advice needed on programming style Variable declarations.... in VB.Net IIS Allowing access to controls from another thread accessing blob fileds from oracle over write running .exe |
|||||||||||||||||||||||