我想把BMP图片读入并显示,这段代码却有问题,谁能帮我看看?

李赞红 2004-12-15 08:18:10
CBitmap bitmap;
HBITMAP hbm;
//pDoc->GetFileName()是一个BMP文件的名称(包括路径)
hbm = (HBITMAP)LoadImage(NULL, pDoc->GetFileName(), IMAGE_BITMAP, 0, 0,
LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);

bitmap.Attach(hbm);
BITMAP bm;
bitmap.GetBitmap((tagBITMAP*)&bm);//好像错在此处
bitmap.SetBitmapDimension(bm.bmWidth,bm.bmHeight);

CDC dcImage;
if(!dcImage.CreateCompatibleDC(pDC))
return;

CBitmap *oldbmp = dcImage.SelectObject(&bitmap);

CSize size = bitmap.GetBitmapDimension();
pDC->BitBlt(0,0,size.cx,size.cy ,&dcImage,50,50,SRCCOPY);

dcImage.SelectObject(oldbmp);
DeleteObject(bitmap);
...全文
98 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
李赞红 2004-12-15
  • 打赏
  • 举报
回复
解决了,呵,原来开始运行的时候,pDoc->GetFileName()是空,我判断后就没问题了.
alphakiller 2004-12-15
  • 打赏
  • 举报
回复
呵呵,好像不能用Getbitmap,它是把bitmap里的值赋给bm
试试我这段代码...
用的是LoadImage读外部文件

//显示外部的BMP文件
HBITMAP hbitmap;
hbitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),"SAMPLE.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
ASSERT(hbitmap);
HBITMAP OldBitmap;
CDC memDC2;
CRect rect;
memDC2.CreateCompatibleDC(pDC);
GetClientRect(rect);
OldBitmap=(HBITMAP)memDC2.SelectObject(hbitmap);
//显示位图
pDC->BitBlt(240,50,rect.Width()-20,rect.Height()-20,&memDC2,0,0,SRCCOPY);
pDC->TextOut(250,150,"显示外部BMP文件");
memDC2.SelectObject(OldBitmap);
李赞红 2004-12-15
  • 打赏
  • 举报
回复
这里我只是试一下啦,bitmap.GetBitmap(&bm);也是错的.
alphakiller 2004-12-15
  • 打赏
  • 举报
回复
bitmap.GetBitmap((tagBITMAP*)&bm);//好像错在此处
~~~~~~~~~~为什么要强制转换阿?
Getbitmap的形参本来就应该是BITMAP型指针阿
Kudeet 2004-12-15
  • 打赏
  • 举报
回复
bitmap.GetBitmap(&bm);

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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