QQ登录

只需一步,快速开始

129上位机VC MFC获取图片任意位图的颜色值

[ 复制链接 ]

129上位机VC MFC获取图片任意位图的颜色值

129上位机VC MFC获取图片任意位图的颜色值

129上位机VC MFC获取图片任意位图的颜色值


功能展示

一幅图片,不同位置上的颜色各有不同不如何获取图片上任意位置的颜色值?我们当前例程实现了这一功能,当鼠标移动到位图上,鼠标侧边显示颜色值,且将颜色直充到右侧矩形中,效果如图;
要点提示
图片的获取,首先要获取鼠标所在窗口的CDC设备上下文,然后通过此类的函数GetPixel便可快速获取, RGB的各个值可以通过GetRValue()GetGValue() GetBValue()三个函数分别获取;





实现功能
1.新建基于对话框的应用程序
2.给工程加入一位图,用于测试用;
添加一图片控件,修改下默认ID为IDC_BMP,设置其类型为位图,位图ID为我们添加的位图ID;
添加一图片控件,修改下默认ID为IDC_COLOR用于显示获取的颜色效果;
添加一文本控件,修改下默认ID为IDC_TEXT,用于显示获取颜色的RGB值;

3.添加鼠标移动消息,实现颜色的获取与显示
  1. void CGkbc8Dlg::OnMouseMove(UINT nFlags, CPoint point)
  2. {
  3.         CDialog::OnMouseMove(nFlags, point);

  4.         if(GetDlgItem(IDC_BMP) == ChildWindowFromPoint(point))
  5.         {
  6.                 CDC* pDC = GetDlgItem(IDC_BMP)->GetDC();
  7.                 MapWindowPoints(GetDlgItem(IDC_BMP),&point,1);//坐标点转换为控件上坐标
  8.                 COLORREF Color;
  9.                 Color = pDC->GetPixel(point);//获取控件上点point的颜色值
  10.                
  11.                 int r,g,b;
  12.                 r = GetRValue(Color);
  13.                 g = GetGValue(Color);
  14.                 b = GetBValue(Color);
复制代码
  1. CString sText;
  2.                 sText.Format("R:%d,G:%d,B:%d",r,g,b);
  3.                 CDC *pDCText = GetDlgItem(IDC_TEXT)->GetDC();
  4.                 CSize sz = pDCText->GetTextExtent(sText);
  5.                 GetDlgItem(IDC_TEXT)->SetWindowText(sText);
  6.                 GetDlgItem(IDC_TEXT)->SetWindowPos(&wndTop ,point.x+20,point.y+20,sz.cx,sz.cy,
  7.                         SWP_SHOWWINDOW);
  8.                 //>< 填充矩形
  9.                 CRect rc;
  10.                 GetDlgItem(IDC_COLOR)->GetClientRect(rc);
  11.                 CDC* pDCColor = GetDlgItem(IDC_COLOR)->GetDC();
  12.                 CBrush  Brush(RGB(r,g,b));
  13.                 pDCColor->FillRect(rc,&Brush);
  14.                 //
  15.                 GetDlgItem(IDC_COLOR)->ReleaseDC(pDCColor);
  16.                 GetDlgItem(IDC_BMP)->ReleaseDC(pDC);
  17.                 GetDlgItem(IDC_TEXT)->ReleaseDC(pDCText);
  18.         }
  19.         else
  20.                 GetDlgItem(IDC_TEXT)->ShowWindow(SW_HIDE);//隐藏文本窗口
  21. }
复制代码
我们来演示下功能实现的整个过程
请点击此处下载

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

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

文件名称:129.上位机VC MFC获取图片任意位图的颜色值.rar 
文件大小:319.7 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

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

  

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

  

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


回复

使用道具 举报

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