这个我也遇到过,打印预览正常但是打印不正常,那你就可以在OnPrepareDC中将打印预览和打印分开,使用不同的映射模式。类似如下的代码: if (!pDC->IsPrinting() || pInfo->m_bPreview)//不是打印或者是打印预览 { } else//打印 { }
void CMapDrawerView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) { // TODO: 在此添加专用代码和/或调用基类 if (!pDC->IsPrinting() || pInfo->m_bPreview) CZoomView::OnPrepareDC(pDC, pInfo); else{ CZoomView::OnPrepareDC(pDC, pInfo); //I really don't know why there is trouble, when printing GDI+ output to the priter, using MM_ANISOTROPIC mode // i test that MM_TEXT mode is OK. But my project us MM_ANISOTROPIC. I have resize viewpoint for the CDC before // painting. CSize size= pDC->GetViewportExt(); int x = pDC->GetDeviceCaps(LOGPIXELSX) / 100; int y = pDC->GetDeviceCaps(LOGPIXELSY) / 100; pDC->SetViewportExt(CSize(size.cx/x, size.cy/y)); CPoint p = pDC->GetWindowOrg(); pDC->SetViewportOrg(-p.x*x, p.y*y); pDC->OffsetViewportOrg(p.x,-p.y);
if (!pDC->IsPrinting() || pInfo->m_bPreview)//不是打印或者是打印预览
{
}
else//打印
{
}
{
// TODO: 在此添加专用代码和/或调用基类 if (!pDC->IsPrinting() || pInfo->m_bPreview)
CZoomView::OnPrepareDC(pDC, pInfo);
else{
CZoomView::OnPrepareDC(pDC, pInfo);
//I really don't know why there is trouble, when printing GDI+ output to the priter, using MM_ANISOTROPIC mode
// i test that MM_TEXT mode is OK. But my project us MM_ANISOTROPIC. I have resize viewpoint for the CDC before
// painting.
CSize size= pDC->GetViewportExt();
int x = pDC->GetDeviceCaps(LOGPIXELSX) / 100;
int y = pDC->GetDeviceCaps(LOGPIXELSY) / 100; pDC->SetViewportExt(CSize(size.cx/x, size.cy/y));
CPoint p = pDC->GetWindowOrg(); pDC->SetViewportOrg(-p.x*x, p.y*y);
pDC->OffsetViewportOrg(p.x,-p.y);
}
}
你的方法我试过了,还是不行。
是在OnPrint里么???