473,378 Members | 1,390 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,378 software developers and data experts.

Printing using margins

tm
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

Feb 3 '06 #1
7 2730
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
"tm" <tb***@cwnet.com> wrote in message
news:%2***************@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

Feb 4 '06 #2
tm
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
Feb 5 '06 #3
You can get the printable page size from the PrintPageEventArgs.PageBounds
which is passed to the PrintPage Event.
--
Dennis 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

Feb 5 '06 #4
tm
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
Feb 5 '06 #5
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

Feb 5 '06 #6
tm
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" <De****@discussions.microsoft.com> wrote in message
news:50**********************************@microsof t.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

Feb 6 '06 #7
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
"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" <De****@discussions.microsoft.com> wrote in message
news:50**********************************@microsof t.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


Feb 7 '06 #8

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
by: Jody Gelowitz | last post by:
I am having a problem with printing selected pages. Actually, the problem isn't with printing selected pages as it is more to do with having blank pages print for those pages that have not been...
0
by: Programatix | last post by:
Hi, I am working on the PrintDocument, PrintDialog, PageSetupDialog and PrintPreviewControl components of Visual Studio .NET 2003. My developement machine is running Windows XP. There are...
0
by: Programatix | last post by:
Hi, I am working on the PrintDocument, PrintDialog, PageSetupDialog and PrintPreviewControl components of Visual Studio .NET 2003. My developement machine is running Windows XP. There are...
0
by: JF Turcotte | last post by:
Hi I'm unsuccessfully trying to print a form's image under VB.NET. To print under .NET is a real pain in the , I find it to be complex, lenghty, confusing, upsetting and ultimately not to be...
2
by: qumpus | last post by:
My program right now generates USPS style shipping label using System.Drawing.Graphics. It works fine except that the printer prints really slowly. I want to make my program take advantage of true...
8
by: Tinus | last post by:
Hello all, Because you have been so helpfull the last couple of times, I thought after testing and wasting more than 20 pages (and google-ling for 3 days :-( ). I would ask you again for your...
4
by: iwdu15 | last post by:
can anybody help me print from a rich text box? i tried the way they showed on the MSDN web page, but it did not work. I am using VB.net 2003...any help would be appreciated
7
by: DazedAndConfused | last post by:
I have a 8.5 x 11 landscape document with about 1/4 inch of space on the left and right where there is no print. The document displays perfect in print preview, but when I print it, about 1/2 inch...
8
by: Frank Rizzo | last post by:
I am trying to print huge images (much bigger than target paper). I try and use e.PageSettings.HardMarginX and e.PageSettings.HardMarginY in the PrintDocument's PrintPage event to try and...
1
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...
0
by: ryjfgjl | last post by:
In our work, we often need to import Excel data into databases (such as MySQL, SQL Server, Oracle) for data analysis and processing. Usually, we use database tools like Navicat or the Excel import...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.