MFC显示bitmap图片的两种方法

⌚Time: 2022-06-02 12:34:05

👨‍💻Author: Jack Ge

首先新建一个项目TestPicture

在窗口中放入一个Picture Control控件

要做的就是在图片控件中显示bitmap图片。

方法一:

添加图片资源

在资源视图中对TestPicture.rc右键,添加资源

选择BitMap,点击导入

选择bitmap导入后的资源文件夹多了Bitmap和导入的图片

对于图片控件,右键属性,设置Type为Bitmap,然后设置Image为IDB_BITMAP1,也就是图片资源的ID

之后编译运行就可以了

方法二:

在OnInitDialog函数中加入以下代码


HBITMAP hbmp;

hbmp = (HBITMAP)LoadImage(AfxGetInstanceHandle(),_T("C:\\Users\\m\\Downloads\\scenery.bmp"),IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);

//设置静态控件的样式,使其可以使用位图,并试位标显示使居中,在SetBitmap之前调用

((CStatic*)GetDlgItem(IDC_PIC))->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);

((CStatic*)GetDlgItem(IDC_PIC))->SetBitmap(hbmp);

其中"C:\Users\m\Downloads\scenery.bmp"是加载的图片路径,而IDC_PIC是图片控件的ID,使用


DeleteObject(hbmp);

释放hbmp对象

除此之外,也可以通过图片资源的ID进行图片的载入,在OnInitDialog函数中加入以下代码


CBitmap bitmap;

bitmap.LoadBitmap(IDB_BITMAP1);

//设置静态控件的样式,使其可以使用位图,并试位标显示使居中 

((CStatic*)GetDlgItem(IDC_PIC))->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);

((CStatic*)GetDlgItem(IDC_PIC))->SetBitmap(bitmap);

bitmap.DeleteObject();

效果: