请分析下面这段程序,打印预览有图形,而实际打印不出图形,为何打印预览和打印结果不一样呢?
OnPrint(...)
{......
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP_COUNTER);//位图 IDB_BITMAP_COUNTER
CDC dcComp;
dcComp.CreateCompatibleDC(pDC);
dcComp.SelectObject(&bitmap);
         pDC->StretchBlt(100,100,36,36,&dcComp,0,0,36,36,SRCAND);
bitmap.DeleteObject();
.......
}

解决方案 »

  1.   

    应该设定映射模式:
    pDC->SetMapMode(...);具体可以看MSDN
      

  2.   

    我采用的是默认的模式:SetMapMode(MM_TEXT);为何打印预览和打印结果不一样呢?原因在哪里呢?
      

  3.   

    我想你所说的“打印预览和打印结果不一样”是指打印结果比预览要小很多,对不?如果是这样,有几个方法解决,这里讲一个:在打印输出时,图元的尺寸因子要乘上一个系数r,r = 打印机的分辨率/显示器的分辨率,设备的分辨率可以调用GetDeviceCaps(...)函数得到。不过这个方法不能保证打印输出的尺寸为图像的实际尺寸。要得到实际的打印输出尺寸,需要设置逻辑映射模式(而不是设备映射模式),同时还要计算图像的逻辑尺寸(而不是像数值).
      

  4.   

    我昨天还遇到这个问题。
    我的解决方法是,直接往pDC里画图,不要经过兼容位图。