设为首页 加入收藏

TOP

11.6.1 信息提示框的设计与实现(3)
2013-10-07 14:34:15 来源: 作者: 【 】 浏览:58
Tags:11.6.1 信息 提示 设计 实现

11.6.1  信息提示框的设计与实现(3)

【代码解析】

第3、4行获取当前鼠标光标的位置,第7、8行获取鼠标光标所在点的颜色,第9~12行获取鼠标光标所在点颜色的RGB值。第16行设置颜色值的提示信息。第17~21行设置初始运行时的提示信息,第23~26行设置鼠标绘制橡皮筋框时的提示信息,第28~33行设置绘制完橡皮筋框后的提示信息。第35行将设置好的信息显示到自定义的编辑框上。

(5)当鼠标移动时,鼠标所在点的颜色值将有可能时时变化,因此就需要时时的重新绘制信息提示框上的提示信息。而当橡皮筋框状态没有变化时,它的信息也会随鼠标移动而重绘。这样便会导致信息框的闪屏问题。为了解决这个问题,设计了一个函数modifyColor()。在鼠标移动而截屏模块状态没有变化时,只需重绘RGB值,实现如下:

  1. 01  void CCatchDlg::modifyColor()  
  2. 02  {  
  3. 03      CClientDC dc(this);  
  4. 04      CPoint pt;  
  5. 05      GetCursorPos(&pt);              //保存旧的RGB值字符串  
  6. 06      COLORREF color;  
  7. 07      color = dc.GetPixel(pt);        //得到当前R、G、B、各像素值  
  8. 08      BYTE rValue,gValue,bValue;  
  9. 09      rValue = GetRValue(color);  
  10. 10      gValue = GetGValue(color);  
  11. 11      bValue = GetBValue(color);  
  12. 12      //按格式排放字符串  
  13. 13      CString string;  
  14. 14      string.Format("(%d,%d,%d)",rValue,gValue,bValue);  
  15. 15      //如果当前颜色没变则不刷新RGB值,以免窗口有更多闪烁  
  16. 16      if(m_strOld != string)  
  17. 17      {  
  18. 18          //得到RGB文本那一行的文本长度  
  19. 19          int LineLength=m_eTip.LineLength(6);  
  20. 20          //复选RGB值文本,也就是(255,255,255)形式  
  21. 21          m_eTip.SetSel(20,LineLength+6);  
  22. 22          //替换RGB内容  
  23. 23          m_eTip.ReplaceSel(string);   
  24. 24          m_strOld = string;  
  25. 25      }  
  26. 26  }  

【代码解析】

同SetTip()函数一样,第4~11行获取鼠标光标当前位置点的RGB值。第13、14行将鼠标光标当前位置点的RGB值转化为字符串形式。第16行判断鼠标光标点的颜色值与上次的值是否相同,如不同则在第19行获取显示RGB那行信息的文本长度。然后在第21行将这行RGB值选中,最后在第23行用新值字符串替换原值,第24行保存这次获取的颜色值。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇11.6.2 截图模块主窗体的设计与实.. 下一篇11.6.1 信息提示框的设计与实现(..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: