用VC++实现picture control从外部读取图像(而不是控件关联bitmap图像)

比如说我有一个pill.jpg我怎么让他在控件里面显示?就是在dlg对话框加上一个按钮,这个按钮实现图像的加载。假如有程序就更好!!... 比如说我有一个pill.jpg我怎么让他在控件里面显示?
就是在dlg对话框加上一个按钮,这个按钮实现图像的加载。
假如有程序就更好!!
展开
 我来答
shaoqi08110820
推荐于2016-05-20 · TA获得超过2508个赞
知道大有可为答主
回答量:1514
采纳率:100%
帮助的人:1723万
展开全部

MFC 自己封装了BITMAP类,可以加载BITMAP ,但是加载jpg还得自己写整个解析过程

我写了一个读取BITMAP的代码,如下

放在Button的单击事件里面

CRect r;

 GetClientRect(&r);

 CDC* pDC = GetDC();   

 //填充背景

 

 pDC->FillRect(&r,NULL);

 HBITMAP hBitmap;

 

 CString sFile="e:/shao.bmp";   //设置路径

 hBitmap = (HBITMAP)LoadImage( GetModuleHandle(NULL),(LPCTSTR)sFile, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

 CBitmap cbmp;

 cbmp.Attach(hBitmap);

 CDC memdc;

 memdc.CreateCompatibleDC(pDC);

 memdc.SelectObject(&cbmp);

 BITMAP bmp;

 //获得位图参数

 long width,height;

 cbmp.GetBitmap(&bmp);

 width = bmp.bmWidth;

 height = bmp.bmHeight;                                         

 pDC->StretchBlt(r.left,r.top,(int)width,(int)(height),

  &memdc,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);

 cbmp.Detach(); 

 

 

如果你想显示jpg,tif格式建议学习opencv+MFC 很方便

更多追问追答
追问
嗯 确实可以 但是还有一点点问题想请教一下    比如我的图片名字什么都不变  但是每次都是不同的视频帧覆盖这个图片名字  我怎么能够每次点击的时候图像覆盖呢?例如:pill.bmp   先是显示这个  然后换一张图片覆盖这个图片  怎么实现呢?  在click button里面要假如哪些代码呢?
追答
你要把 memdc.SelectObject(&cbmp); 这个cbmp 换成下个图片就可以做到了,就是把下一张图片加载内存,我最近用MFC+opencv 做了个图像的各种处理,可以实现你的要求

其实视频的一帧就是一张图片,你把它显示到内存再把它画出来,,,其实和上面是一样的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式