怎样用mfc在窗口指定区域显示位图

就是要在窗口的某个位置显示一张位图。

BOOL BitBlt( HDC hdcDest, // handle to destination DC int nXDest, // x-coord of destination upper-left corner int nYDest, // y-coord of destination upper-left corner int nWidth, // width of destination rectangle int nHeight, // height of destination rectangle HDC hdcSrc, // handle to source DC int nXSrc, // x-coordinate of source upper-left corner int nYSrc, // y-coordinate of source upper-left corner DWORD dwRop // raster operation code );这个API就可以贴在指定位置贴位图,其中的nXDes,nYDes就是贴图坐标如果有问题加我QQ点下面链接就可以了 http://sighttp.qq.com/cgi-bin/check?sigkey=da2e0a992ff070b0a385e11d14bcee5ad19e02a579a86d190cd7fd6e9a5e0a6d
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-06
Visual C++的CBitmap类的功能是比较弱的,它只能显示出在资源中的图标、位图、光标以及图元文件的内容有了CImage类,Visual C++在图像方面的缺憾将一去不复返。CImage是MFC和ATL共享的新类,它能从外部磁盘中调入一个JPEG、GIF、BMP和PNG格式的图像文件加以显示,而且这些文件格式可以相互转换。例如通过简单的几句,就可以实现CImage类和CBitmap类实例的:HBITMAP hBitmap=image.Detach();
CBitmap bmp;
bmp.Attach(hBitmap);这样一来,就又回归到以前操纵CBitmap的方式了.CImage本身封装了DIB(设备无关位图)的功能,因而能够处理每个位图像素。由于CImage在不同的Windows操作系统中其某些性能是不一样的,因此在使用时要特别注意。例如,CImage::PlgBlt和 CImage::MaskBlt只能在 Windows NT 4.0 或更高版本中使用,但不能运行在Windows 95/98 应用程序中。CImage::AlphaBlend和CImage::TransparentBlt也只能在 Windows 2000/98或其更高版本中使用。即使在Windows 2000运行程序还必须将stdafx.h文件中的WINVER和_WIN32_WINNT的预定义修改成0x0500才能正常使用。使用CImage的一般方法

  使用CImage的一般方法是这样的过程:

  (1) 打开应用程序的stdafx.h文件添加CImage类的包含文件:

#include <atlimage.h>

  (2) 定义一个CImage类对象,然后调用CImage::Load方法装载一个外部图像文件。

  (3) 调用CImage::Draw方法绘制图像。Draw方法具有如下定义:BOOL Draw( HDC hDestDC, int xDest, int yDest,
int nDestWidth, int nDestHeight, int xSrc, int ySrc,
int nSrcWidth, int nSrcHeight );
BOOL Draw( HDC hDestDC, const RECT& rectDest, const RECT& rectSrc );
BOOL Draw( HDC hDestDC, int xDest, int yDest );
BOOL Draw( HDC hDestDC, const POINT& pointDest );
BOOL Draw( HDC hDestDC, int xDest, int yDest,
int nDestWidth, int nDestHeight );
BOOL Draw( HDC hDestDC, const RECT& rectDest );
  其中,hDestDC用来指定绘制的目标设备环境句柄,(xDest, yDest)和pointDest用来指定图像显示的位置,这个位置和源图像的左上角点相对应。nDestWidth和nDestHeight分别指定图像要显示的高度和宽度,xSrc、ySrc、nSrcWidth和nSrcHeight用来指定要显示的源图像的某个部分所在的位置和大小。 rectDest和rectSrc分别用来指定目标设备环境上和源图像所要显示的某个部分的位置和大小。

  需要说明的是,Draw方法综合了StretchBlt、TransparentBlt和AlphaBlend函数的功能。默认时,Draw的功能和 StretchBlt相同。但当图像含有透明色或Alpha通道时,它的功能又和TransparentBlt、AlphaBlend相同。因此,在一般情况下,我们都应该尽量调用CImage::Draw方法来绘制图像。
找了一个例子;
void CEx_ImageView::OnDraw(CDC* pDC)
{
 CEx_ImageDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 if (!m_Image.IsNull()) {
  m_Image.Draw(pDC->m_hDC,0,0);
 }
}本回答被网友采纳

如何用 VC(MFC)实现基于对话框的位图读取显示
1、将图像文件以资源形式加入工程中,IDB_BITMAP1 2、用一个PICTURE控件,在其属性中,将其Type设置为Bitmap 3、将Piture控件的属性中的Image设置为IDB_BITMAP1 运行

谁知道怎么在MFC对话框中显示位图?
在OnPaint()中加入以下代码 \/\/在对话框中直接显示图像 BITMAP bm;CBitmap bmp;\/\/定义CBitmap 类的对象 bmp.LoadBitmap(IDB_BITMAP1);\/\/装入ID号为IDB_BITMAP1的位图 CDC memdc;\/\/定义CDC类的对象 CRect rect;memdc.CreateCompatibleDC(&dc);\/\/创建与显示DC相兼容的内存DC bmp.GetBitmap(&b...

mfc 显示图像问题:
1、添加控件:拖一个图形控件到窗口上,把控件是属性设置为位图 2、引入位图:在资源视图里,选择bitmap,在上面点右键,选择“引入”,然后在弹出的选择文件对话框中选择你要从外部引入的图片,引入后一般外部图片都会超过256色,所以无法在VC里面浏览。新引入的图片会对应一个资源ID,如IDC_BITMAP1。...

如何利用mfc编程显示一幅位图
用单文档和对话框都可以。单文档:在Document类里添加OnOpen,这个函数用CFileDialog,在View类里重载OnDraw 对话框 拉一个static控件或者Picture控件,重载OnPaint函数,在里面画出来。不用API的话,只能显示8位bmp

MFC怎么能把桌面上的一张图片给显示在界面上,求帮忙,最好能写一下代码...
位图的使用步骤如下:(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....

利用MFC和VC++,显示一个位图。
在控件栏里面找 picture 控件放到你要显示图片的地方,然后设置 picture 控件的属性->类型为 Bitmap 然后在 图像里填你要显示的图片的资源ID 如果还不行找本人联系:QQ:35707492

MFC怎么显示自定义位图
void CTtView::OnLButtonDown(UINT nFlags, CPoint point){ \/\/ TODO: Add your message handler code here and\/or call default CBitmap bmp;bmp.LoadBitmap(IDB_BITMAP1);CClientDC dc(this);CDC dcMemory;dcMemory.CreateCompatibleDC(&dc);CBitmap * old= dcMemory.SelectObject(&bmp);dc....

怎么在按MFC的打开之后打开一个图片让图片显示在MFC窗体里?
对话框添加Pic控件 类型选择bitmap 关联Control类型变量m_pic 菜单消息处理函数内部

MFC中,对话框添加位图现实问题.
为对话框添加WM_SIZE消息,每当对话框大小发生改变时都会响应这个消息,你就在这个消息响应函数里面添加代码

怎样在MFC中读取一幅图片并显示在对话框里面
对话框类加一个存图像路径的变量 用来选择和打开图像 处理图像的部分写在“开始”按键的响应函数里 关于显示:你一个MFC对话框程序想显示图像在那啊?如果只要直接画上去的话就重载OnPaint写代码

相似回答