QQ登录

只需一步,快速开始

112上位机VC MFC浏览任意比例位图

[ 复制链接 ]

112上位机VC MFC浏览任意比例位图

112上位机VC MFC浏览任意比例位图

112上位机VC MFC浏览任意比例位图


功能展示

一般在位图浏览时,都有放大缩小位图,进行任意比例的查看,我们当前例程就实现了这一功能,输入任意缩放比例后,位图将自动自行放大或缩小,效果如图
要点提示
位图的缩放主要是通过函数StretchBlt()来实现 的,函数原形为BOOL StretchBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop ); 它的参数很多,能够灵活应用,会有不一样的效果,参数含义为 X,Y:目标矩形的左上角坐标, nWidth, nHeight目标矩形要显示的长与宽, pSrcDC被复制的设备上下文指针, xSrc , ySrc要被复制的矩形左上角坐标, nSrcWidth ,nSrcHeight要被复制在矩形长与宽, dwRop 为光栅操作类型,类型众多,我们当前例程用到复制类型SRCCOPY ;
实现功能
1.新建基于对话框的应用程序
2.拖拽一编辑框控件,关联无符号整形变量UINT  m_Rate;,用于设置位图显示的比例。再添加此编辑框的EN_CHANGE消息函数,用于执行比例效果void CGkbc8Dlg::OnChangeEdit1()

{ DrawPicture(); } DrawPicture()为我们自定义函数,用于显示图片用
  1. void CGkbc8Dlg::DrawPicture()
  2. {
  3.         UpdateData(TRUE);//编辑框内容刷新
  4.         //获得窗口大小
  5.         CRect r;
  6.         GetDlgItem(IDC_RECT)->GetClientRect(&r);
  7.         CDC* pDC = GetDlgItem(IDC_RECT)->GetDC();        
  8.         //填充背景
  9.         pDC->FillRect(&r,NULL);
  10.         //将位图选进设备场景中
  11.         CBitmap cbmp;
  12.         cbmp.LoadBitmap(IDB_BITMAP1);
  13.         CDC memdc;
  14.         memdc.CreateCompatibleDC(pDC);
  15.         memdc.SelectObject(&cbmp);

  16.         //获得位图参数
  17.         long width,height;
  18.         BITMAP bmp;
  19.         cbmp.GetBitmap(&bmp);
  20.         width = bmp.bmWidth;
  21.         height = bmp.bmHeight;
  22.         pDC->StretchBlt(r.left,r.top,(int)(width*m_Rate/100),(int)(height*m_Rate/100),
  23.                 &memdc,0,0, bmp.bmWidth,bmp.bmHeight,SRCCOPY);
  24.         GetDlgItem(IDC_RECT)->Invalidate();
  25. }
复制代码
为了实现窗口在自行重绘,我们在主对话框OnPaint()函数中也调用DrawPicture()一下;


我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:112.上位机VC MFC浏览任意比例位图.rar 
文件大小:281.44 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!



回复

使用道具 举报

点击查看
快速回复 返回列表 客服中心 搜索