C# 打印之横行进纸

来源:互联网 发布:淘宝拍卖手机可信吗 编辑:程序博客网 时间:2024/04/27 15:32

今天遇到一个需求.程序控制打印.但进纸需要是横行进纸.

就是说呢文档是竖向的.正常竖向放纸就能出结果.但之前程序设计.横行的输出是当成竖向打印,就是把纸横行进纸.文档是宽>高.好了现在正常竖向文档,宽<高.横行进纸就变成打印区域不正确了.

解决方案很简单.就是文档转成横向打印

printDocument1.DefaultPageSettings.Landscape = true;

然后把图像也转90度

e.Graphics.RotateTransform(-90.0F);e.Graphics.TranslateTransform(0 , e.PageBounds.Height , MatrixOrder.Append);

第一句是左转90度

第二句重设坐标.左转设Y,右转设X


好了.如果行普通的情况下就可以用了.

但有时候.需引用一下e.PageBounds 或 e.MarginBounds 进行布局控制的时候.就有问题了.因为图像转了.这两个值都没变. 更悲剧的是这两个值正常不能改,万恶的OO,

 最后只能偷渡了

 Rectangle mbn = new Rectangle(e.MarginBounds.Top, e.MarginBounds .Left , e.MarginBounds.Height, e.MarginBounds.Width); FieldInfo fi = e.GetType().GetField("marginBounds",BindingFlags.Instance|BindingFlags.NonPublic);             fi.SetValue(e, mbn);

 用反射把值给改了,注意的是转换的(x,y)值,e.PageBounds 就不用了,是不用关注(x,y)



原创粉丝点击