如何设置打印页边距

在打印图形时,如果想设置打印页的页边距,只需要将内容偏移一段距离(页边距),输出到打印DC上即可,现在问题是如何精确(或大致精确)地控制这段距离。

在CView打印(或打印预览)时,OnPrint事件中有一个参数为pInfo,pInfo里有一个m_rectDraw成员,表示的是打印DC输出的矩形大小,以像素为单位,到这里离我们的问题近了一步。我们的画图函数基本上都可以控制位置,如MoveTo,LineTo,TextOut等等,也都是以像素为单位的。

是不是这样就可以满足我们的要求了,好像还差点,总不能让人设置页边距是多少多少像素吧!我们终归要设置以实际长度为单位的距离。在这里要用到CDC类的一个函数,GetDeviceCaps(),用这个函数得到每单位长度有多少像素,以英寸为单位。得到的值有两种,横向和纵向。横向值和纵向值还不一样。

int nPixPerchH,intPixPerChV;

nPixPerChH = pDC->GetDeviceCaps(LOGPIXELSX);

nPixPerChV = pDC->GetDeviceCaps(LOGPIXELSY);

得到每英寸的像素数,再转换成每大家都习惯的每厘米像素数,一英寸等于2.54厘米。

现在,可以设置以厘米为单位的页边距,又知道每厘米的像素数,一乘就行了。

另外,打印是和硬件关系紧密的事儿,有时候硬件还要留一点页边距,这个就不是软件能控制的了。所以,一些问题的解决方法也不是绝对的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值