Re: How to print in full page without margins
- From: "Ron Allen" <rallen@xxxxxxxxxxxxxxxxxx>
- Date: Mon, 8 Aug 2005 09:21:13 -0400
Judge,
You may be seeing the way the rectangle is being drawn. Try drawing the
rectangle with the left and bottom 1 less than the generated amounts. I've
never tried the OriginAtMargins offset though. I just normally to a
TranslateTransform by the negative of the left and top margins and then draw
as normal. When I have output that may overflow the printer's hard margins
I test the scaling necessary to fit into the drawn area and do a scale on
the drawing as well.
You might want to try doing the TranslateTransform on the Graphics to
see how that works as well.
Ron Allen
"Judge" <Judge@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:F5E99071-EE20-4D6D-9A08-D8CD08A656DD@xxxxxxxxxxxxxxxx
> Hi Ron,
> I found a great set of codes and article that you post in the other forum
> for getting the printer's hard margin throught GetDeviceCaps.
>
> I was able to retrieve the correct hard margins through GetDeviceCaps but
> I
> am unable to tell the printer to use that hard margins to draw maximum
> printable area. I have the following code for setting the margins.
>
> IntPtr hDc = new IntPtr();
> hDc = e.Graphics.GetHdc();
> PrintUtil.GetHardMargins(hDc, ref leftHardMargin, ref topHardMargin, ref
> rightHardMargin, ref bottomHardMargin);
> e.Graphics.ReleaseHdc(hDc);
>
>
>
> leftMargin = Convert.ToInt32(leftHardMargin);
> topMargin = Convert.ToInt32(topHardMargin);
> rightMargin = Convert.ToInt32(rightHardMargin);
> bottomMargin = Convert.ToInt32(bottomHardMargin);
>
> this.DefaultPageSettings.Margins = new
> Margins(leftMargin,leftMargin,topMargin,topMargin);
>
> this.OriginAtMargins = true;
> Rectangle myRect = new Rectangle(leftMargin, topMargin, rightMargin,
> bottomMargin);
>
>
> e.Graphics.DrawRectangle(Pens.Black, myRect );
>
> The printer cuts of the right side of the rectangle box. And the printer's
> left offeset seems to be wider than the printer's actual printable area
> which
> I tested with left and right margin set to zero. So I can see where the
> printer start printing on the page.
>
> I have tried so many ways of setting printers margins but none seems to
> work.
>
> Furthermore, my way of setting margins have different effects on different
> printers.
>
> Please help me figure out what is making this weird behavior.
>
> Thanks in advance
>
>
> "Ron Allen" wrote:
>
>> Most printers can't print all the way to the physical margins. You
>> are
>> undoubtedly seeing the physical offset for the hard margins for your
>> page.
>> You can PInvoke GetDeviceCaps to get the exact physical margins for the
>> printer drawing on a page and you could then scale the drawing so that
>> all
>> your information will fit or just offset things if you don't need the
>> actual
>> whole page size.
>> There are some printers that can print all the way to the margins for
>> larger paper but they tend to be very expensive.
>>
>> Ron Allen
>> "zhaounknown" <zhaounknown@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
>> news:AB95B24B-D809-4833-B4E7-AC6219F114D4@xxxxxxxxxxxxxxxx
>> >I set the DefaultPageSettings.Margins.Left/Right/Top/Bottom to 0, it
>> >doesn't
>> > seem to work for the Left margin for two printers (HP and Brother).
>> >
>> > Am I missing any other properties that should be set? Thanks a lot.
>>
>>
>>
.
- Follow-Ups:
- Re: How to print in full page without margins
- From: Judge
- Re: How to print in full page without margins
- References:
- Re: How to print in full page without margins
- From: Judge
- Re: How to print in full page without margins
- Prev by Date: Re: How to print in full page without margins
- Next by Date: Re: Bitmap constructor
- Previous by thread: Re: How to print in full page without margins
- Next by thread: Re: How to print in full page without margins
- Index(es):
Relevant Pages
|