问题一:
编程环境:winXP,分辨率1024*768
未重载onPrint().
在onDraw()中这样写:
pDC->SetMapMode(MM_HIMETRIC);
……
CFont fnt;
CFont *Ofnt;
LOGFONT lf;
memset(&lf,0,sizeof(LOGFONT));
lstrcpy(lf.lfFaceName,"Times New Roman");
lf.lfHeight=-MulDiv(200,pDC->GetDeviceCaps(LOGPIXELSY),72);
fnt.CreateFontIndirect(&lf);
pDC->SelectObject(&fnt);
pDC->ExtTextOut(AllValuedPt[i].x,AllValuedPt[i].y,str);
……
结果在视图区能正常显示文字大小,但进行打印预览时却文字奇大!比视图区显示的文字要大很多!看了网上的文章后在OnPrepareDC()中这样写:
void CGQVS20advView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: 在此添加专用代码和/或调用基类 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;
long yExt =(long)size.cx * yLogPixPerInch/96;
pDC->SetViewportExt((int)xExt,(int)yExt);//确定视口大小
}
还是不管用!问题二:
用不同的打印机打印出来的结果是不同的!字体有大有小!哪位高手能替我解决这个问题!感激不尽!