if (pDoc->m_pImage)
{
int cxPage = pDC->GetDeviceCaps(HORZRES);
int cyPage = pDC->GetDeviceCaps(VERTRES);
int cxInch = pDC->GetDeviceCaps(LOGPIXELSX);
int cyInch = pDC->GetDeviceCaps(LOGPIXELSY);
int cx = cxPage-200;
int cy = (int)(((double)pDoc->m_pImage->GetHeight()*cyInch*cx)
/((double)pDoc->m_pImage->GetWidth()*cxInch));
Graphics graphics(pDC->GetSafeHdc());
graphics.SetInterpolationMode(InterpolationModeHighQualityBicubic);
graphics.DrawImage(pDoc->m_pImage, Rect(100, 100, cx, cy));
}
我再预览的时候没问题的,但是打印出来就有问题了。
预览图像:
打印图像:
请问怎么将打印和预览效果弄一致?
7 个解决方案
#1
改变映射模式,好象是在OnPreparePrint函数里设置,如果改变映射模式不行,就让打印和打印预览是两个代码,在打印时调用打印代码,预览时调用你原来的代码.不过只要取得了打印纸张大小和设置好映射模式就可以了
#2
具体怎么改映射模式的,我MM_TEXT和MM_LOMETRIC都试过,一样的
#3
跟一下程序,是不是坐标搞错了?
#4
打印一般用MM_TWIST这个模式方便方便,你试试这个模式,查一下这个模式对应的尺寸关系,我忘了
#5
cx, cy的问题是一方面吧。
Graphics graphics(pDC->GetSafeHdc());有CreatePrinterDC()的吧
尝试下吧
Graphics graphics(pDC->GetSafeHdc());有CreatePrinterDC()的吧
尝试下吧
#6
是GDI+的问题,你用GDI来显示试试看
#7
最后怎么解决的啊?
#1
改变映射模式,好象是在OnPreparePrint函数里设置,如果改变映射模式不行,就让打印和打印预览是两个代码,在打印时调用打印代码,预览时调用你原来的代码.不过只要取得了打印纸张大小和设置好映射模式就可以了
#2
具体怎么改映射模式的,我MM_TEXT和MM_LOMETRIC都试过,一样的
#3
跟一下程序,是不是坐标搞错了?
#4
打印一般用MM_TWIST这个模式方便方便,你试试这个模式,查一下这个模式对应的尺寸关系,我忘了
#5
cx, cy的问题是一方面吧。
Graphics graphics(pDC->GetSafeHdc());有CreatePrinterDC()的吧
尝试下吧
Graphics graphics(pDC->GetSafeHdc());有CreatePrinterDC()的吧
尝试下吧
#6
是GDI+的问题,你用GDI来显示试试看
#7
最后怎么解决的啊?