有时,我们需要用VB快速开发一个试验数据绘图处理程序,将绘图控件内的鼠标光标改变成与AutoCAD软件中使用的大十字光标的形式,将可以比普通的箭头光标达到更好的效果。那么我们如何实现这样的大十字光标呢?

----首先,我们明确一下要达到的效果,假若我们在一个Picture控件中绘图,那么,鼠标移动到这个控件上时,鼠标光标立即改变为大十字形状,光标中的横线从控件的左边界到右边界,竖线从控件的上边界到下边界,即大十字光标将绘图控件分割为四个象限。当鼠标移动到控件外时,光标则又恢复成原来的形式。

----要实现这样的光标,得我们自己通过画线的方式实现。如鼠标在绘图控件内,先在鼠标的当前位置画上光标的横线和竖线;当鼠标位置移动,先擦除原先的光标横线和竖线,然后再在新的位置画光标的横线和竖线,那么我们就要响应绘图控件的MouseMove事件。当然,绘图控件内无论有什么内容,我们擦除光标线和重画光标线时都不能破坏原先的内容,因此我们要将绘图模式SetROP2设置为R2_XORPEN

(异或方式),绘制光标的横线和竖线时,用异或的方式将横线和竖线的象素点颜色设为光标的颜色和原先的象素点色彩的异或值,再用异或的方式在同样的位置绘制一遍竖线和横线,横线和竖线上的象素点再一次和光标颜色进行异或操作,就擦除了光标的横线和竖线,且又恢复了绘图控件内原先的内容。

----我们还得保证鼠标移动到绘图控件内时,普通的鼠标光标消失,只有绘制的大十字光标出现,因此还应该设置绘图控件的MousePointer属性为vbCuntom,即用户自定义。绘图控件的MousePointer属性设置为vbCustom后,其MouseIcon属性中应装入相应的用户自定义图形,因为我们希望绘图控件内只有我们绘制的光标,而没有其它的光标,故应该装入一个空的(透明的)光标图形。可以任找一个光标文件,通过任意一个资源编辑器对其进行编辑,用透明的方式填充整个光标图形,保存成我们所需的NoIcon.cur即可。

----通过以上的关键设置和操作,我们就可以实现大十字光标了。利用异或方式进行绘图,我们还可以实现一般绘图软件中常有的“橡皮筋”效果,即用鼠标定义一个点后,动态拖动鼠标来定义另外一个点,动态拖动鼠标过程中,所要绘的图形也动态相应变化。

CDC* pDC = GetDC();
 CRect rt;
 GetClientRect(&rt);
 COLORREF XorColor = pDC->GetBkColor() ^ RGB(64,64,112);
 int oldDrawMode = pDC->SetROP2(R2_XORPEN);
 CPen pen(PS_SOLID, 1, XorColor);
 CPen* pOldPen = pDC->SelectObject(&pen);
 pDC->MoveTo(rt.left,oldpt.y);
 pDC->LineTo(rt.right,oldpt.y);
 pDC->MoveTo(oldpt.x,rt.top);
 pDC->LineTo(oldpt.x,rt.bottom);
 pDC->MoveTo(rt.left,pt.y);
 pDC->LineTo(rt.right,pt.y);
 pDC->MoveTo(pt.x,rt.top);
 pDC->LineTo(pt.x,rt.bottom);
 pen.DeleteObject();
 pDC->SetROP2(oldDrawMode);
 pDC->SelectObject(pOldPen);
 ReleaseDC(pDC);

摘自:http://www.mscto.com/vb/2009021430398.html

实现绘图区的大十字光标相关推荐

  1. allegro大十字光标设置方法

    使用大十字光标,在摆放元器件时,容易对齐.在allegro中,可以通过设置实现大十字光标,其具体方法如下: 1.选择Setup->User Perferences,即可出现如下图所示界面: 2. ...

  2. cad在哪里设置图幅大小_CAD教程之如何设置十字光标大小及颜色

    前几天在"AutoCAD教程"微信公众号后台,看到有网友留言"十字光标颜色怎么改?" 由于CAD软件默认的颜色是白色,实际应用中,黑底白字看起来也是最舒服的, ...

  3. 2017cad光标大小怎么调_cad十字光标怎么调大-调整cad十字光标大小的方法 - 河东软件园...

    在使用autocad绘制图纸的时候,绘制面板会出现一个十字光标.和unity3d一样,这个光标控制着我们图纸的大小,光标缩小之后整个绘制区域就会缩小,相反放大则整个界面也能变大!为了方便绘制,我们的用 ...

  4. 2017cad光标大小怎么调_cad光标设置,详细教您CAD的十字光标如何设置大小

    CAD广泛应用于工程机械.室内建筑等一些需要平面绘图及布局的行业,它快速.方便的帮助设计师们工作.而对于初学者,常常会遇到一个问题那就是用于捕捉点的十字光标有时会特别大或特别小,影响绘图的效率.下面, ...

  5. 光标大小怎么调_cad十字光标和坐标系,你必知的几个小技巧!

    左下角阅读原文看CAD视频 好课推荐: 1.CAD2014:点击查看   2.室内&全屋:点击查看 3.CAD2019:点击查看 4.CAD2018:点击查看 5.Bim教程:点击查看 6.室 ...

  6. 2017cad光标大小怎么调_cad光标设置,小编教你CAD的十字光标如何设置大小

    在新打开的Auto CAD软件界面上会出现很小的十字光标和靶框,这种比例的十字光标和靶框会影响到绘图的速度和质量,在CAD的日常使用中,可能会遇到设置十字光标大小的问题,如何设置CAD十字光标的大小呢 ...

  7. CAD怎么设置十字光标大小?CAD十字光标设置

    由于每位设计师的需求不同,所以在CAD绘图过程中会需要根据自身需求来对CAD十字光标设置.那么,CAD怎么设置十字光标大小呢?下面,小编给大家简单介绍一下浩辰CAD看图王电脑版中CAD十字光标设置的相 ...

  8. android 画布 轨迹,Android 多点触控,绘制滑动轨迹和十字光标

    这个测试项,要捕捉当前有几个触摸点,当前触摸点坐标,滑动事件在x轴.y轴方向的速度等信息,在触摸时跟随触摸点会出现十字光标,绘制出滑动轨迹. 首先绘制出暗色格子背景,采用了自定义View,较为简单,核 ...

  9. owc_绘图区(PlotArea)背景显示多种颜色

    owc_绘图区(PlotArea)背景显示多种颜色 阅读(62) 评论(0) 发表时间:2008年07月21日 10:28 本文地址:http://www.cnblogs.com/no7dw/admi ...

最新文章

  1. C#的基础琐碎总结-----委托
  2. 天线决定接受频率_对讲机天线到底有多重要?通讯效果好不好要靠它!
  3. Android 布局错乱 Android花屏
  4. 武汉python培训哪一家好一些-武汉哪个Python培训机构比较好?
  5. iOS-获取通讯录联系人信息
  6. 【Linux 内核】进程管理 ( 进程与操作系统 | 进程与程序 | 进程与线程 | 虚拟地址空间 )
  7. pyqt5入门教程(三)
  8. 请解释下Spring 框架中的IOC 容器?
  9. 自定义预览_为什么NVR预览画面数量少于已经添加的通道数
  10. NLPIR RuntimeError: NLPIR function 'NLPIR_Init' failed 解决方案
  11. C#的static constructor抛了异常会怎么处理?
  12. 【HDU - 5914 】Triangle (打表 或 set维护)
  13. Zabbix监控nginx status
  14. 让电脑提速的小方法-----QoS数据计划程序
  15. 并发容器Map之一:ConcurrentHashMap原理(jdk1.8)
  16. 1.Spring实现数据库的读写分离
  17. 解决啦啦外卖小程序无法生成海报推广码
  18. 学Python可以做Web前端开发吗?
  19. 大功率MOS管选型手册及可申请样品-KIA MOS管
  20. 2021-2027全球与中国3D产品可视化平台市场现状及未来发展趋势

热门文章

  1. 关于注册公司流程(实操)。
  2. iOS阻止文件被iTunes和iCloud同步
  3. 朴素贝叶斯分类器(Naive Bayesian Classifier)
  4. 一个优秀的销售经理该具备哪些技能?
  5. classList详解,让你的js方便地操作DOM类
  6. 【游戏调研】企鹅岛——治愈放置类游戏
  7. 财务人员懂计算机语言,一个外企财务总监对想要从事财务工作人的一点点建议(Flash)...
  8. PS怎么快速做破旧划痕老照片效果
  9. python中elif语句_Python学习笔记控制流语句之elif语句
  10. HashMap 源码分析与常见面试题