图象变小打印问题

 打印问题,你所遇到的是不同的设备的DPI不同导致。显示器以分辨率计算,即横纵有1024*768个像素点,而DPI每平方英寸的像素点,不同的打印机有不同的DPI精度,DPI越高表示打印的效果越精细。因此显示器上看着正常的图像到打印机上却是变小就是因为如此,WINDOWS中解决的办法是采用映射来解决。即通过设定窗口和视口范围来解决不同设备之间精度不相同带来的放大缩小问题,这里的逻辑坐标指的是自己定义的坐标而不是WINDOW窗口的客户区坐标,而设备坐标也是指打印机的设备坐标。窗口也不是指WINDOWS的窗口,而是指你用逻辑坐标在WINDOW窗口中指定的一个矩形范围,映射就是将这个矩形范围映射到打印机的可打印矩形范围去,中间WIDNOWS会按给定的两个范围进行转换操作。  
  用MFC向导生成的打印和预览框架需要重载OnPrepareDC()成员函数在其内进行映射操作,需要注意的是此成员函数不仅在打印和打印预览前被调用在OnDraw()成员数执行前也会被调用。  
  以下代码中的pDC是已经获得的打印机句柄指针  
  int   pageX   =   pDC->GetDeviceCaps   (HORZRES);//以像素为单位返回打印机可打印宽度  
  int   pageY   =   pDC->GetDeviceCaps   (VERTRES);//以像素为单位返回打印机可打印高度  
  int   ViewX   =   600;int   ViewY   =   800;   //自定义的逻辑坐标范围,可以采用与显示器相同的分辨率范围  
   
  pDC->SetMapMode   (MM_ANISOTROPIC);  
  pDC->SetWindowExt   (ViewX,   ViewY);//设定窗口范围  
  pDC->SetViewportExt(pageX,   pageY);//设定视口范围
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值