为什么打印机打出来的字体与在对话框设备环境上相比大好多好多?

jiangwen365 2002-09-07 08:47:00
我在对话框中画了一个矩形Rectangle(x,y,450+x,280+y);然后又TextOut(12+x,10+y,"大");这时对话框里显示好大一个矩形,矩形的左上角有一个相对小的汉字。
然后我加了几行代码,好支持打印功能。
结果大出来的矩形倒是正常的,可是字大的离谱,本来是这样的:
__________________________
|
| 大
|
|
|
|
打出来的成这样了
__________________________
|
| +
| ++++++++++++++
| +
| + +
| + +
| + +

而且我在设备说明上加了MM_LOENGLISH映射,打出来的东西应该什么都是反的,现在其他的确实都是反的,但字都还是正的。好像字体根本不管MM_LOENGLISH的设置的。

关键的几个代码片断:
下面的一段程序是对话框里一个按钮的响应程序片断。
CPrintDialog dlgPrint(FALSE,PD_ALLPAGES,this);
if (dlgPrint.DoModal()==IDOK)
{
CDC dcPrint;
dcPrint.Attach(dlgPrint.GetPrinterDC());

DOCINFO myPrintJob;
myPrintJob.cbSize=sizeof (myPrintJob);
myPrintJob.lpszDocName="MyPrintJob";
myPrintJob.lpszOutput=NULL;
myPrintJob.lpszDatatype=NULL;
myPrintJob.fwType=NULL;

CShowBill billDC(&dcPrint,CPoint(20,0));这是我定义的一个在CDC &dcPrint上CPoint坐标开始作图的一个类,dcPrint地址传进去作为成员函数。

long page;
if (dcPrint.StartDoc(&myPrintJob)>=0)
while (pos!=NULL)
{
page=m_lc.GetNextSelectedItem(pos);
page=atol(m_lc.GetItemText(page,0));
dcPrint.StartPage();
billDC.Show(GetBill(page),page);//前面那个类的成员函数,调用了后面的代码;
dcPrint.EndPage();
};
dcPrint.EndDoc();
dcPrint.DeleteDC();
}

下面的代码是billDC.Show(GetBill(page),page);里的。
font.CreatePointFont(100,"宋体",pDC);
if (pDC->IsPrinting())
pDC->SetMapMode(MM_LOENGLISH);
pDC->SetBkMode(TRANSPARENT);
pDC->Rectangle(x,y,450+x,280+y);
pDC->TextOut(12+x,10+y,"页码:");
谢谢。

...全文
66 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dominolili 2002-11-12
  • 打赏
  • 举报
回复
一般屏幕默认设置的分辨率是300dpi,而打印机默认设置的分辨率为600dpi
e_feeling 2002-11-12
  • 打赏
  • 举报
回复
是不是与打印机分辨率有关, 因为屏幕的分辨率与打印机的分辨率不一样.

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧