文本绘制更新图片

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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值