SOS:VC++中有关图形打印的难题?

PeterLiu 2000-06-28 04:48:00
下面的代码在OnDraw(...)中被调用:

......在此之前有许多行代码用于画图.....
BITMAP BitMap;
CBitmap *pOldBitmap;
CDC dcImage;
m_TZBmp.GetBitmap(&BitMap);
if (!dcImage.CreateCompatibleDC(pDC))//Create MemDC
return;
pOldBitmap = dcImage.SelectObject(&m_TZBmp);

pDC->StretchBlt(Rect.left, Rect.top, Rect.Width(), Rect.Height(), &dcImage, 0, 0, BitMap.bmWidth, BitMap.bmHeight,SRCAND);

dcImage.SelectObject(pOldBitmap); //select old bitmap

该BMP图在屏幕上可以正常显示,但到了打印机上却无法被打印出来!!!!
其他的线条和文字都可以被正常打印出来!!!!


SOS!!!!!
...全文
152 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
evelan 2000-06-28
  • 打赏
  • 举报
回复
StretchBlt的前四个参数换成下面得到值即可,我以前碰到过此问题,要想图像不失真,你还要进行比例变换。我用宽度为基准换算。

nWidth = pdc->GetDeviceCaps(HORZRES); (宽度)
.......
舟中夜起 2000-06-28
  • 打赏
  • 举报
回复
你用BitBlt一般没有问题,至少我目前为止没有遇到任何问题,我建议你用此函数。
这是我在防闪烁的一种用法(OnPain函数中):
CRect rect;
GetClientRect(&rect);

CBitmap pBM; //Bitmap for drawing against flashing
CBitmap* pBMOld;
CDC* pDC = new CDC;

VERIFY(pDC);
VERIFY(pDC->CreateCompatibleDC(&dc));
pBM.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height());
pBMOld = pDC->SelectObject(&pBM);
//////////////////////////////////////////////
//your code
//在此我有许多BMP操作,没有任何问题


////////////////////////////////////////////////
dc.BitBlt(0, 0, rect.Width(), rect.Height(), pDC, 0, 0, SRCCOPY);//copy bitmap to current DC
delete pDC;
pBM.DeleteObject();
PeterLiu 2000-06-28
  • 打赏
  • 举报
回复
Re: "StretChBlt有问题, 一般的显示设备是支持此函数的,但一般的打印机设备不支持,用此函数之前,最好用GetDeviceCaps查一下,我建议你用BitBlt试试,它支持的设备多一些,对于图象的扩张和压缩,最好自己用Bitmap搞:) "

注: 即使这样 还是无法打印!!!!怎样做到与设备无关地打印BMP图形!!!!
PeterLiu 2000-06-28
  • 打赏
  • 举报
回复
可能是StretchBlt的Draw mode没有设对,SRCAND应改为SRCCOPY-------
注: 即使这样 还是无法打印!!!!


舟中夜起 2000-06-28
  • 打赏
  • 举报
回复
StretChBlt有问题, 一般的显示设备是支持此函数的,但一般的打印机设备不支持,用此函数之前,最好用GetDeviceCaps查一下,我建议你用BitBlt试试,它支持的设备多一些,对于图象的扩张和压缩,最好自己用Bitmap搞:)
江王 2000-06-28
  • 打赏
  • 举报
回复
可能是StretchBlt的Draw mode没有设对,SRCAND应改为SRCCOPY
Dlf 2000-06-28
  • 打赏
  • 举报
回复
关注。

16,470

社区成员

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

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

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