MFC怎么能把桌面上的一张图片给显示在界面上,求帮忙,最好能写一下代码。还有图片控件怎么用呀? 10

加载图片是不是可以用LoadBitmap("C:\\Users\\xx\\Desktop\\xx.jpg");那显示呢?是不是用SetBitmapBits(DWORDdw... 加载图片是不是可以用
LoadBitmap("C:\\Users\\xx\\Desktop\\xx.jpg");

那显示呢?是不是用SetBitmapBits(DWORDdwCount,constvoid*lpBits);
这个函数不太会用。。。
最好给个详细的代码,我最后一定加分,最少加30分,求帮忙!
展开
 我来答
Enders_Hu
2012-10-29
知道答主
回答量:7
采纳率:0%
帮助的人:7万
展开全部
位图的使用步骤如下:
(1)导入位图
把位图文件作为资源导入到应用程序
选择“插入|资源”命令
注意其ID,如IDB_BITMAP1
(2)装载位图
把位图资源装载到CBitmap对象
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
(3)读取位图信息
BITMAP bm;
bmp.GetBitmap(&bm);
int w=bm.bmWidth;
int h=bm.bmHeight;
(4)构造内存画板,并将位图装入内存画板
CDC memDC;
memDC.CreateCompatibleDC(NULL);
memDC.SelectObject(&bmp);
(5)将位图从内存画板复制到屏幕画板上
pDC->BitBlt(0,0,w,h,&memDC,0,0,SRCCOPY);
①BOOL CDC::BitBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
int xSrc, int ySrc, DWORD dwRop );
(x,y):位图显示区域左上角的坐标
nWidth和nHeight:显示区域的宽度和高度
pSrcDC:指向内存设备环境
(xSrc, ySrc)为原图欲显示区域左上角的坐标
dwRop:复制方式,常用值为SRCCOPY
② BOOL StretchBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
int xSrc, int ySrc, int nSrcWidth, int nSrcHeight,
DWORD dwRop );
nSrcWidt、nSrcHeight:欲显示的原图的区域大小
与BitBlt的区别:可以缩放
------------------------------------------------------------------------------
示例代码如下,在OnDraw函数里面添加:
CBitmap cbm;
cbm.LoadBitmap(bitmapID);
BITMAP bm;
cbm.GetBitmap(&bm);
int w = bm.bmWidth;
int h = bm.bmHeight;
CRect rect;
GetClientRect(&rect);
int x = (rect.right-rect.left)/2-w/2;
int y = (rect.bottom-rect.top)/2-h/2;
CDC memDC;
memDC.CreateCompatibleDC(NULL);
memDC.SelectObject(&cbm);
pDC->BitBlt(x,y,w,h,&memDC,0,0,SRCCOPY);
cbm.DeleteObject();
memDC.DeleteDC();
----------------------------------------------------------------------
如欲显示其他格式的图片,可以用到CImage类,CImage类是ATL和MFC共用的一个类,其头文件为atlimage.h,主要用于图片文件的打开,显示与保存。这里需要注意的是,在VS2010和VS2012的MFC编程中,不需要将头文件包含进来。
显示图片:
CImage image;
image.Load(L"D:\\用户目录\\Pictures\\example.jpg");
image.Draw(GetDC()->m_hDC,CRect(0,0,320,240));
CImage类支持以Load方法读取本地磁盘上的文件,并用Draw方法来显示图片。CIamge类的成员函数中还有很多可以实现显示图片。例如BitBlt办法。如以下代码:
image.BitBlt(GetDC()->m_hDC,0,0,320,240,0,0,SRCCOPY);
Bitblt方法同CDC类的Bitblt函数一样,是一比一地复制图像并显示在屏幕上,支持对源图像取反,也就是反色显示。这样功能通过BitBlt的最后一个参数来实现,比如参数为NOTSRCCOPY就是反色显示。
MaskBlt可以将图片与目的图片进行特殊的光栅操作并进行掩码处理。
PlgBlt函数可以将图片拉伸成平行四边形进行显示。
StretchBlt函数可以将图片进行拉伸显示
参看百度百科:http://baike.baidu.com/view/5725174.htm
追问
比如说,有一张图片,但是如果直接贴到界面上的话肯定是大小不一定的,怎么实现放缩使图片和界面一样大?
百度网友f61e0b9
2012-10-27
知道答主
回答量:16
采纳率:0%
帮助的人:6.8万
展开全部
LoadBitmap是加载位图的(bmp格式),这个应该要用image,显示在OnDraw里重绘显示就行了。
更多追问追答
追问
能具体说一下吗?我没有找到Image这个东西呀,是类还是函数?
追答
CImage image;  //创建一个CImage类
image.Load(L"D:\\用户目录\\Pictures\\example.jpg");// 加载图片
image.Draw(GetDC()->m_hDC,CRect(0,0,320,240));//显示图片
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JK0215
2012-10-29 · TA获得超过143个赞
知道小有建树答主
回答量:98
采纳率:0%
帮助的人:97万
展开全部
我能直接发例程给你,要的话留邮箱
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式