用VC++实现picture control从外部读取图像(而不是控件关联bitmap图像)
就是在dlg对话框加上一个按钮,这个按钮实现图像的加载。
假如有程序就更好!! 展开
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 做了个图像的各种处理,可以实现你的要求
其实视频的一帧就是一张图片,你把它显示到内存再把它画出来,,,其实和上面是一样的