当前位置: 代码迷 >> VC/MFC >> MFC 打印功能的座标和窗口坐标不一致吗
  详细解决方案

MFC 打印功能的座标和窗口坐标不一致吗

热度:75   发布时间:2016-05-02 03:40:53.0
MFC 打印功能的坐标和窗口坐标不一致吗?
     用MFC实现打印功能,首先先打印预览,默认是A4纸,不知道这个A4纸的坐标和窗口逻辑坐标是什么关系。需要转化吗?而且对应于不同分辨率的电脑可以通用
------解决思路----------------------
void CGeneratorView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) 
{

CView::OnPrepareDC(pDC, pInfo);
pDC->SetMapMode(MM_ANISOTROPIC); //转换坐标映射方式
CSize size = CSize(800, 560);

pDC->SetWindowExt(size);//确定窗口大小 //得到实际设备每逻辑英寸的象素数量

int xLogPixPerInch = pDC-> GetDeviceCaps(LOGPIXELSX
int yLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSY);//得到设备坐标和逻辑坐标的比例 long xExt = (long)size.cx * xLogPixPerInch/96 ;//800
long yExt = (long)size.cy * yLogPixPerInch/96 ;//560
pDC->SetViewportExt((int)xExt, (int)yExt);//
}
------解决思路----------------------
1、你的内容是固定的,它的尺寸如果以MM计算,那么不管在什么设备上它都一样
2、在不同的输出设备上你需要进行不同的计算和处理,你可以直接获取实际设备的每英寸像素数,与内容的MM尺寸进行转换
3、按转换后的实际像素输出到设备上
1英寸=25.4MM
------解决思路----------------------
为了提高精度,你运算时不要使用偏移量计算,而是使用总量计算,从而减少累计误差。
  相关解决方案