打印位图 向打印DC 里 BitBlt or StretchBlt 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的回答是假定你已经可以显示位图了!显示和打印的区别在于,分辨率的差别----打印机与屏幕的分辨率是不一样的!其中cyDIB和cxDIB是位图的高度和宽度.int cxPage = pDC->GetDeviceCaps(HORZRES);int cyPage = pDC->GetDeviceCaps(VERTRES);// get printer pixels per inchint cxInch = pDC->GetDeviceCaps(LOGPIXELSX);int cyInch = pDC->GetDeviceCaps(LOGPIXELSY);rcDest.top = rcDest.left = 0;rcDest.bottom = (int)(((double)cyDIB * cxPage * cyInch)/ ((double)cxDIB * cxInch));rcDest.right = cxPage;如果还有问题,请与我联系,非常愿意与你讨论! 有两点建议:1:不要使用绝对坐标,例如CRect(0, 0, 500, 500),这样,现实的时候可能一切正常,但是你可以试一试预览或者打印出来。因为显示器的分辨率和打印机的分辨率不同。2:不要使用BitBlt、StreatchBlt,他们同设备相关。尤其是后者,打出来的图形有相当大的锯齿。应该使用SetDIBitsToDevice等设备无关函数。 怎么知道socket连接的另一方的socket是正常断开,还是非正常断开 出差回来,坐车晕车,散分! 关于MFC工程 VC++定义全局数组 vc6.0 调试 Debug Assertion Faild错误 菜鸟问题! 在线等,200分,关于10060问题的解决,绝不食言. 我在读取系统日志时候出现以下错误该如何解决? 谁能介绍几本比较好的API书籍?电子版的? 请问如何将繁体转换为简体?谢谢! 100分求解,如何编程序改变位图的画质? 神呀!!救救我吧.
其中cyDIB和cxDIB是位图的高度和宽度.
int cxPage = pDC->GetDeviceCaps(HORZRES);
int cyPage = pDC->GetDeviceCaps(VERTRES);
// get printer pixels per inch
int cxInch = pDC->GetDeviceCaps(LOGPIXELSX);
int cyInch = pDC->GetDeviceCaps(LOGPIXELSY);
rcDest.top = rcDest.left = 0;
rcDest.bottom = (int)(((double)cyDIB * cxPage * cyInch)/ ((double)cxDIB * cxInch));
rcDest.right = cxPage;如果还有问题,请与我联系,非常愿意与你讨论!
1:不要使用绝对坐标,例如CRect(0, 0, 500, 500),这样,现实的时候可能一切正常,但是你可以试一试预览或者打印出来。因为显示器的分辨率和打印机的分辨率不同。
2:不要使用BitBlt、StreatchBlt,他们同设备相关。尤其是后者,打出来的图形有相当大的锯齿。应该使用SetDIBitsToDevice等设备无关函数。