用VC++对话框怎么显示图片啊,谢谢你了
4个回答
展开全部
在WM_PAINT中画图。这是显示图片最常用的方法,各类窗体、控件要加上背景都基本上是在OnPaint中将图片画上。具体做法如下:
//从资源中载入图片
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
//得到图片信息
BITMAP bmpInfo;
bmp.GetBitmap(&bmpInfo);
//在内存中创建一个位图兼容设备
CDC dcMemory;
dcMemory.CreateCompatibleDC(&dc);
//将图片选入兼容设备
CBitmap *pOldBmp=dcMemory.SelectObject(&bmp);
//将兼容设备的内容copy到屏幕设备中,实现真正的Paint
dc.BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory, 0, 0, SRCCOPY);
//将设备还原
dcMemory.SelectObject(pOldBmp);
这样图片便显示在主对话框上。
特殊处理:
是不是经常有人提到某些加快图形显示、减少闪烁?处理什么WM_ERASEBKGND消息?
确实是这样,应为每个窗体重画时,它先会发WM_ERASEBKGND消息,让窗体用设置好的刷子将窗体需要重画的区域刷一次,然后才会发送 WM_PAINT消息,将需要的再画上去。这样就可以保证不会有残留的图形。但这样就会在短暂的时间内出现灰色背景,如果执行比较慢,就会让人感觉到。因此如果你确定不需要清除原有的背景,那么你就可以在OnEraseBkgnd中直接返回TRUE,或者直接在这里面绘图。
//从资源中载入图片
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
//得到图片信息
BITMAP bmpInfo;
bmp.GetBitmap(&bmpInfo);
//在内存中创建一个位图兼容设备
CDC dcMemory;
dcMemory.CreateCompatibleDC(&dc);
//将图片选入兼容设备
CBitmap *pOldBmp=dcMemory.SelectObject(&bmp);
//将兼容设备的内容copy到屏幕设备中,实现真正的Paint
dc.BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory, 0, 0, SRCCOPY);
//将设备还原
dcMemory.SelectObject(pOldBmp);
这样图片便显示在主对话框上。
特殊处理:
是不是经常有人提到某些加快图形显示、减少闪烁?处理什么WM_ERASEBKGND消息?
确实是这样,应为每个窗体重画时,它先会发WM_ERASEBKGND消息,让窗体用设置好的刷子将窗体需要重画的区域刷一次,然后才会发送 WM_PAINT消息,将需要的再画上去。这样就可以保证不会有残留的图形。但这样就会在短暂的时间内出现灰色背景,如果执行比较慢,就会让人感觉到。因此如果你确定不需要清除原有的背景,那么你就可以在OnEraseBkgnd中直接返回TRUE,或者直接在这里面绘图。
展开全部
在OnPaint中加载位图用BITBLT输出位图
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
static 属性改为picture
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-10-01
展开全部
{
typedef int (WINAPI ICEPUB_DISPIMG)(HWND hWnd,char *strImgFilename,int x,int y);
ICEPUB_DISPIMG *icePub_dispImg = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");
if(hDLLDrv)
{
icePub_dispImg = (ICEPUB_DISPIMG *)GetProcAddress(hDLLDrv, "icePub_dispImg");
}
if(icePub_dispImg != NULL)
icePub_dispImg(m_hWnd,"b.png",10,10);
// icePub_dispImg(m_ctrlText.m_hWnd,"b.jpg",0,0);
if(hDLLDrv)
FreeLibrary(hDLLDrv);
}
typedef int (WINAPI ICEPUB_DISPIMG)(HWND hWnd,char *strImgFilename,int x,int y);
ICEPUB_DISPIMG *icePub_dispImg = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");
if(hDLLDrv)
{
icePub_dispImg = (ICEPUB_DISPIMG *)GetProcAddress(hDLLDrv, "icePub_dispImg");
}
if(icePub_dispImg != NULL)
icePub_dispImg(m_hWnd,"b.png",10,10);
// icePub_dispImg(m_ctrlText.m_hWnd,"b.jpg",0,0);
if(hDLLDrv)
FreeLibrary(hDLLDrv);
}
参考资料: icePubDll.dll百度之
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询