MFC图片自适应
时间: 2023-07-22 09:05:05 浏览: 73
在MFC中,可以使用CStatic控件来显示图片,并通过控件的SetBitmap函数设置图片。为了实现图片自适应,可以通过以下步骤来实现:
1. 获取图片的尺寸
使用CBitmap类加载图片,并使用GetBitmap函数获取图片的尺寸。
```cpp
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
BITMAP bmpInfo;
bmp.GetBitmap(&bmpInfo);
int bmpWidth = bmpInfo.bmWidth;
int bmpHeight = bmpInfo.bmHeight;
```
2. 计算控件的尺寸
获取控件的尺寸,并计算出应该显示的图片大小。
```cpp
CRect rect;
GetClientRect(&rect);
int ctrlWidth = rect.Width();
int ctrlHeight = rect.Height();
float ratio = min((float)ctrlWidth / bmpWidth, (float)ctrlHeight / bmpHeight);
int imgWidth = (int)(bmpWidth * ratio);
int imgHeight = (int)(bmpHeight * ratio);
```
3. 设置图片
将计算出的大小应用到SetBitmap函数中。
```cpp
bmp.Detach();
bmp.LoadBitmap(IDB_BITMAP1);
HBITMAP hBmp = (HBITMAP)bmp.GetSafeHandle();
CBitmap* pBmp = CBitmap::FromHandle(hBmp);
CBitmap* pOldBmp = m_staticPic.SetBitmap(pBmp);
BITMAP bmpInfo;
pBmp->GetBitmap(&bmpInfo);
m_staticPic.SetWindowPos(NULL, 0, 0, imgWidth, imgHeight, SWP_NOMOVE | SWP_NOZORDER);
```
这样就可以实现图片自适应了。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)