QQ登录

只需一步,快速开始

上位机mfc图像局部放大源代码

[ 复制链接 ]

上位机mfc图像局部放大源代码

上位机mfc图像局部放大源代码

例程实现一个简单功能,
通过鼠标在图片上移动,放大鼠标移动区域的图片。
效果如图,
实现时,图片外围多余部分未刷新,出现重叠,可以自己强制刷新。
鼠标操作关键代码为:

  1. void CZoomPartView::OnMouseMove(UINT nFlags, CPoint point)
  2. {
  3.         //计算要放大的局部矩形的源图像位置和目标位置
  4.         CString cord;
  5.         int dd;
  6.     CRect srect,drect,mrect;
  7.         srect.left = point.x - s;
  8.         srect.top = point.y - s;
  9.         srect.right = point.x + s;
  10.         srect.bottom = point.y + s;
  11.        
  12.         drect.left = point.x - d;
  13.         drect.top = point.y - d;
  14.         drect.right = point.x + d;
  15.         drect.bottom = point.y + d;
  16.        
  17.         mrect.left = oldx - d;
  18.         mrect.top = oldy - d;
  19.         mrect.right = oldx + d;
  20.         mrect.bottom = oldy + d;
  21.         dd = 2*d;
  22.         CDC * pDC = GetDC();
  23.         OnPrepareDC(pDC);
  24.         //放大图像
  25.         if (recover)
  26.         {
  27.                 pDC->BitBlt(mrect.left,mrect.top,dd,dd,
  28.                         m_pdcMem,mrect.left,mrect.top,mana);
  29.         }
  30.         pDC->StretchBlt(drect.left,drect.top,
  31.                 drect.Width(),drect.Height(),m_pdcMem,srect.left,
  32.                 srect.top,srect.Width(),srect.Height(),SRCCOPY);
  33.         oldx = point.x; oldy = point.y;
  34.         ReleaseDC(pDC);
  35.        
  36.         recover = true;

  37.         CView::OnMouseMove(nFlags, point);
  38. }

  39. void CZoomPartView::OnLButtonDown(UINT nFlags, CPoint point)
  40. {
  41.         //如果鼠标位置不在位图上,则还原位图大小显示
  42.         CRect rc(0,0,m_sizeSource.cx,m_sizeSource.cy);
  43.         if(!rc.PtInRect(point))
  44.         {
  45.                 Invalidate();
  46.         }
  47.         else if (d > 5)//如果放大倍数大于5,就继续减小放大倍数,然后进行放大显示
  48.         {
  49.                 CDC * pDC = GetDC();
  50.                 pDC->StretchBlt(oldx - d,oldy - d,2*d,
  51.                         2*d,m_pdcMem,oldx - d,oldy - d,2*d,2*d,mana);
  52.                 d -= 10;
  53.                 ReleaseDC(pDC);
  54.                 CZoomPartView::OnMouseMove(nFlags, point);
  55.         }
  56.         CView::OnLButtonDown(nFlags, point);
  57. }

  58. void CZoomPartView::OnRButtonDown(UINT nFlags, CPoint point)
  59. {
  60.         //如果鼠标位置不在位图上,则还原位图大小显示
  61.         CRect rc(0,0,m_sizeSource.cx,m_sizeSource.cy);
  62.         if(!rc.PtInRect(point))
  63.         {
  64.                 Invalidate();
  65.         }
  66.         else if (d <150)//如果放大倍数小于150,就继续增加放大倍数,然后进行放大显示
  67.         {
  68.                 d += 10;
  69.                 CZoomPartView::OnMouseMove(nFlags, point);
  70.         }
  71.         CView::OnRButtonDown(nFlags, point);
  72. }
复制代码
请点击此处下载

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

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

文件名称:上位机mfc图像局部放大源代码.rar 
文件大小:145.16 KB  售价:1金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索