我原来的程序是MM—TEXT模式下的,要用MM-LOENGLISH打印。由于Y方向反的,要把所有的老数据的Y值改过来,特别是CRect。太麻烦了,有没有好的办法?
我想在OnPrint中先用MM-TEXT模式,把当前输出送到一个选上内存兼容位图的memdc,然后再把pDC设置成
MM-LOENGLISH模式。然后把位图输出到打印机,试了一下,用Bitblt发现画出的图是反的
——就象底片,而且图片的过度色都没有了,好象是黑白的。
后来在MM-TEXT下直接打印,直接(不用内存位图方式)输出,打出来很小,但方向颜色正常,先输出到memdc再用OnPrint的pDC->Bitblt(MM_TEXT mode),我倒!又成了黑白的!
是不是 OnPrint的pDC不支持BitBlt?
请指教。

解决方案 »

  1.   

    好像是支持的,但是,你在一个PrepailDC可以判断是写到打印机或是屏幕,然后选择相应的坐标系统和方向放缩比例!
      

  2.   

    刚才说的是MFC里面的实现,其实在API中,就是准备DC的前面可以更改,OnDraw里面的东西可以直接画到打印机里面的
      

  3.   

    pcman1990(pcman) ,谢谢啦。
    今天又搞了一下,发现是memdc不能创建成兼容 OnPrint的pDC。用CClientDC试了一下,再用pDC->StretchBlt(0,0,nwidth,-nheight,&memdc,0,0,nwidth,nheight,SRCCOPY);就能输出了。
    但是图片中得文字显得太粗糙了,与pDC->TextOut直接输出的没法比。看来这种借用图片的方法还有局限。
    有没有更好的方法啊?
    谢谢诸位,
    帖子加分了!