ShowPicture方法
在ShowPicture方法中进行图片更新
pictureResource为图片资源的ID
CStatic mPictureViewer;为图片控件变量
void CMyForm::ShowPicture(UINT pictureResource)
{
CBitmap bitmap;//创建CBitmap对象用于存放我们需要加载的图片
HBITMAP hbmp;//用于记录图片加载后的句柄
bitmap.LoadBitmap(pictureResource);//加载图片资源
hbmp = (HBITMAP)bitmap.GetSafeHandle();//获取图片句柄
this->mPictureViewer.SetBitmap(hbmp);//为空间设置图片
//为了让图片自动缩放以适应空间的尺寸 需要获取图片尺寸信息
BITMAP bmpInfo;//存储图片信息用于获取图片的宽度和高度
bitmap.GetBitmap($bmpInfo);
int bmpWith = bmpInfo.bmWidth;//图片宽度
int bmpHeight = bmpInfo.bmHeight;//图片高度
CRect rect;//记录Picture Control控件的尺寸
this->mPictureViewer.GetClientRect(&rect);
int nx = rect.left + (rect.Width() - bmpWidth) / 2;//计算图片插入位置x
int ny = rect.top + (rect.Height() - bmpHeight) / 2;//计算图片插入位置y
CDC *pDC = this->mPictureViewer.GetDC();//获取DC
pDC->SetStretchBitMode(COLORONCOLOR);//设置图片模式
CDC dcMemory;
dcMemory.CreateCompatibleDC(pDC);
CBitmap *pOldBitmap = dcMemory.SelectObject(&bitmap);
pDC->StretchBit(0,0,rect.Widht(),rect.Height(),&dcMemory,0,0,bmpWidth,bmpHeight,SRCCOPY);
ReleaseDC(pDC);//释放DC 注意获取后必须释放
}
实现重绘时更新图片
void CMyForm::OnPaint()
{
CPaintDC dc(this);
//myPictureResource为当前需要显示图片的id
//或者根据实际情况在调用ShowPicture之前 获取到该ID即可
ShowPicture(myPictureResource);
}
作者:yumxuanyi
链接:https://www.jianshu.com/p/0f3f1b786155
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。