我使用如下代码:
//设置GDI映射方式
SetMapMode(hMemDC,MM_ISOTROPIC);
//设置窗口范围
SetWindowExtEx(hMemDC,rect.right,rect.bottom,NULL);
//设置视口范围
SetViewportExtEx(hMemDC,iDrawWidth,iDrawHeight,NULL);
使打印纸和窗口之间形成了比例映射,然后我使用TextOut函数输出一段文字,可是打印出来发现,字体变的很大,比我想要的大了很多,我想请问这是为什么呀,是由于我更改了GDI映射而导致的么?、
后来我想既然TextOut接受的左边参数是逻辑坐标,那么我不如使用DrawText函数,因为它接受物理坐标,可是我使用了DrawText函数输出相同的文字却没有任何显示,没有办法我又使用了TextOut函数,可是我在该函数的调用前加了一句代码,问题就解决了,输出的文字就不那么大了,就正常了,代码如下:
int nSaveDC = SaveDC(hdc);
SelectObject(hdc,GetStockObject(SYSTEM_FONT));
TextOut(hdc,iDisplayBegionPoint.x,iDisplayBegionPoint.y,cDisplayInfo,uiInfoLength);
RestoreDC(hdc,nSaveDC);
这是为什么呀,我的程序在整个过程中都没有改变字体,为什么字体却变大了,而我将系统字体重新选入设备描述表,问题就解决了,难道是由于更改GDI映射,也会更改系统字体么????
请高手帮我解答???还有就是BitBlt函数接受的是物理坐标,还是逻辑坐标呀,如果是逻辑坐标,它接受的两个长度参数是物理长度,还是逻辑长度呀???