说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB如何在VB中实现绘图区的大十字光标

HTML文档下载 WORD文档下载 PDF文档下载
VB如何在VB中实现绘图区的大十字光标
作者:吴鹏炜
有时,我们需要用VB快速开发一个试验数据绘图处理程序,将绘图控件内的鼠标光标改变成与AutoCAD软件中使用的大十字光标的形式,将可以比普通的箭头光标达到更好的效果。那么我们如何实现这样的大十字光标呢?
---- 首先,我们明确一下要达到的效果,假若我们在一个Picture控件中绘图,那么,鼠标移动到这个控件上时,鼠标光标立即改变为大十字形状,光标中的横线从控件的左边界到右边界,竖线从控件的上边界到下边界,即大十字光标将绘图控件分割为四个象限。当鼠标移动到控件外时,光标则又恢复成原来的形式。

---- 要实现这样的光标,得我们自己通过画线的方式实现。如鼠标在绘图控件内,先在鼠标的当前位置画上光标的横线和竖线;当鼠标位置移动,先擦除原先的光标横线和竖线,然后再在新的位置画光标的横线和竖线,那么我们就要响应绘图控件的MouseMove事件。当然,绘图控件内无论有什么内容,我们擦除光标线和重画光标线时都不能破坏原先的内容,因此我们要将绘图控件的DrawMode设置为vbXorPen(异或方式),绘制光标的横线和竖线时,用异或的方式将横线和竖线的象素点颜色设为光标的颜色和原先的象素点色彩的异或值,再用异或的方式在同样的位置绘制一遍竖线和横线,横线和竖线上的象素点再一次和光标颜色进行异或操作,就擦除了光标的横线和竖线,且又恢复了绘图控件内原先的内容。

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

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

---- 以下我们通过一个示例来完整实现绘图控件中的大十字光标,还演示如何实现用“橡皮筋”效果来画矩形:

---- 在VB中新建一个标准EXE工程,在Form1中加入一个Picture控件,其Name设为PicDraw,可以装入一个图象文件,PicDraw的大小和其中的图象大小基本上覆盖大部分的Form1即可。实现代码如下所示。此程序在VB5.0中运行通过。

Option Explicit
Private Old_X As Single
Private Old_Y As Single
Private isMouseDown As Boolean
Private Box_X0 As Single
Private Box_Y0 As Single
Private Box_X1 As Single
Private Box_Y1 As Single
Private PenColor As Long
Private CrossColor As Long

Private Sub Form_Load()
CrossColor = QBColor(8)
PenColor = QBColor(15)
picDraw.DrawMode = vbXorPen
picDraw.MouseIcon = LoadPicture
(App.Path & "\no.cur")
picDraw.MousePointer = vbCustom
isMouseDown = False
Box_X0 = Box_X1 = Box_Y0 = Box_Y1 = 0
End Sub

Private Sub picDraw_MouseDown
(Button As Integer,
Shift As Integer, X As Single, Y As Single)
If isMouseDown = True Then
'先前已经用鼠标定义了一个点
Box_X1 = X
Box_Y1 = Y
isMouseDown = False
picDraw.DrawMode = vbCopyPen
picDraw.Line (Box_X0, Box_Y0)-
(Box_X1, Box_Y1),
PenColor, B
picDraw.DrawMode = vbXorPen
'画一个光标
picDraw.Line (0, Y)-(picDraw.ScaleWidth, Y),
CrossColor
picDraw.Line (X, 0)-(X, picDraw.ScaleHeight),
CrossColor
Old_X = X
Old_Y = Y
Else
'定义了一个矩形的第一个顶点,则擦除光标
picDraw.Line (0, Y)-(picDraw.ScaleWidth, Y),
CrossColor
picDraw.Line (X, 0)-(X, picDraw.ScaleHeight),
CrossColor
Box_X0 = X
Box_Y0 = Y
isMouseDown = True
End If
End Sub

Private Sub picDraw_MouseMove(Button As Integer,
Shift As Integer, X As Single, Y As Single)
If isMouseDown = True Then
'拖动鼠标来定义矩形的另外一个顶点,
此时擦除前一个矩形,绘制新的矩形
picDraw.Line (Box_X0, Box_Y0)-(Old_X, Old_Y),
PenColor, B
picDraw.Line (Box_X0, Box_Y0)-(X, Y), PenColor, B
Else
'消除旧光标线
picDraw.Line (0, Old_Y)-(picDraw.ScaleWidth, Old_Y),
CrossColor
picDraw.Line (Old_X, 0)-(Old_X, picDraw.ScaleHeight),
CrossColor
'画新的光标线
picDraw.Line (0, Y)-(picDraw.ScaleWidth, Y),
CrossColor
picDraw.Line (X, 0)-(X, picDraw.ScaleHeight),
CrossColor
End If
Old_X = X
Old_Y = Y
End Sub

几小时即可使互联网瘫痪的黑客 现已加入谷歌 Tsar开源:淘宝内部大量使用的系统监控工具 五款超实用的开源SVG工具 微信收费事件背后被广泛忽略的技术细节 UIDesigner 3.0架构设计总结 黑客怒了:政府花930万美金仅做一款App Email服务迎来“第二春” 未来将更加个性化 贯穿应用开发始终的八大陷阱 微评微软也推智能手表:是追求未来,还只是跟随? Firefox OS今年6月在5国首发 不含美国市场 8086/8088汇编指令手册 下一个被黑客攻击的对象—无线路由器 Windows Blue开始按钮或将回归,你怎么看? Evernote推孵化器 不占股权 基于C++和Lua的移动游戏引擎Leadwerks 3发布 苹果秘密测试iOS 7与iPhone 6 或将6月发布 酷6 CTO 陆坚:请先信任你的程序员 从电信联手i-Free,看运营商渠道的加速整合 “Animory”开发者分享HTML5游戏开发经验 Appflood SDK:连接中国与海外App流量交互平台 Apache Subversion 1.7.9正式发布! 微软IE浏览器5大动向 加速吸引开发者 开源的简繁转换库OpenCC支持Node.js 继Opera之后,Adobe表示将支持Google Blink 提高大型软件项目质量的一些实用型技术分享 谷歌推出Mirror API,开发者可为Google Glass开发应用 无需999,也不要499,99美元Linux超级计算机带回家 微软反击AWS:推出EC2并大幅降价,“价格战”正酣 Operation InVersion:拯救了LinkedIn的大修项目 五步走战略——Avocado在最初几周内迅速扩大30倍 NoSQL产品测评:Cassandra、MongoDB、Couchbase和Aerospike 求救阿!!!!!各位大虾帮帮小弟阿!!!! PB调存储过程 关于捕获硬件异常和软件异常的问题 listView 的使用问题(二)????????????????????????????????????????????????????????????????????????????? 我在倒入数据时候出现错误(请回答) Solaris下如何使用USB存储器? 字符 "10"与"2"的排序问题? 各位帮我看看为什么关闭不可以那? 图像处理的高手请进:jpg的分割与组合问题? 请问:APPLET中如何调用一小段MPEG格式的VIDEO? html页面上的透明传输 如何得到winxp中的拨号上网密码 OpenGL与内存设备环境 如何在windows2000下安装apache服务器? 请问谁能帮我把linux里网卡芯片w89c940的驱动源程序提取出来?? html页面上的透明传输 C# webform的简单问题,如何关闭窗口 新手上路,Jb8的小问题 100分求购 经常看到说ADO很好的帖子,但是还是有一些疑惑,望高手赐教 用VC编写NetDDE程序,怎样设定客户程序连接服务器时的密码? 怪问题,请大虾帮忙!!!! 请问要学习数据库系统设计应该看那些资料? 急:高分求助关于jdbc连接MySQL数据库的问题. 如何用javascript来检测机器上是否安装word2000?请给点代码提示,先谢谢了 在本地机器上测试邮件发送 使用treeview数据库绑定,能不能绑到一个子节点下? 关于给目录树的子菜单再增加下层菜单的问题 要访问mysql数据库中排列在最前面的5条数据,怎么班? 高分征求 SQL SERVER 数据库的冗余、负载均衡的解决方案? 无法从硬盘安装Redhat9,大家帮帮我 Delphi7中安装上自己编写的控件后出现的问题??? 求助 100分深情大奉送!! 请教各位高手帮忙是关于EOT的??? 到底怎么用存储过程?是不是在查询分析器中使用? 到底怎么用存储过程?是不是在查询分析器中使用? 串口问题!!! behavior:url(#default#userData)的问题!马上给分。 如何得到所有用户表的表名?(在线等候) 怎么让打开的EXCEL文档自动到某一工作表?? 如何分别取得字符串中空格前和空格后的数据呢?如‘dfds df fds'分为dfds df fds. 谁知道MSWord的文件格式? 怎样给自定义函数设置多个参数项? 在URL地址栏中传递字符串参数遇到的一个问题??? 如何在繁體下打開簡體文件名的文件?要求不能用改名的辦法 插入数据到数据库! 高手关注--------送分-----------急急急! 在ASP中如何编程建立索引服务的编录及目录? 在web server application把MEMO字段中带格式(RTF)的内容转换成纯文本? 请问在身份验证中,能否有两个login.aspx??? 急~那篇给vb控件打包文件添加数字签名以便浏览器浏览的那篇文章在哪里? 乳肉畜牧业是什么意思 1000km/s算什么速度 高一化学有机题,急求一种气态烷烃和一种烯烃的混合物9克,其密度是相同条件下氢气密度的11.25倍,当混合气体通过足量溴水时,溴水增重4.2克,求这两种气态烃.某烃的相对分子质量156,在四 一套西装打七折售价210元,这套西装原价多少元如题,帮我解下这题数学题 修一条长150米的公路,已经修了2/3,剩下的4天修完,平均每天应修多少米? 将11.2L(标准状况)乙烯和乙烷的混合气体通入足量的溴的四氯化碳溶液中,充分反应后,溴的四氯化碳溶液质量增加了5.6g.求原气体混合物中乙烯和乙烷的物质的量之比和质量比. 什么是畜牧业 在直角三角形ABC中,斜边BC=4,则AB的平方+AC的平方+BC的平方的值是多少? 高一化学有机题A是分子式为C7H8的芳香烃,已知它存在以下一系列转化关系,如图,C为一种一元醇D是A的对位一溴代物,H与E、I与F分别互为同分异构体:(1)化合物I的结构简式是——,反应B到C的化 CAD画垂线一条斜线,如何从这条斜线的中间做一条直线且垂直于这条斜线,也就是说,这条斜线的中点同时也是垂点. 3题 紫光檀好吗 问一题畜牧兽医专业,获得性免疫了分为____、____、____、____. 1000m= ( )km? 在直角坐标平面中,X轴上的点M到定点A(2,-4)B(1,-2)的距离分别为MA和MB当MA+MB取最小值时点M的坐标为----(只要写答案, 一套西服原来售价1200元,圣诞节期间打七折,买这样一套西服可节省多少元钱? CAD直线怎么垂直到斜线如图 除了用最近点捕捉,我没法捕捉到垂直的这条线 .红色部分怎么才会有捕捉 C语言 电文破译 题目和我编写的程序如下,请大神指出我错在哪里,并改正,答得好的追加.Description有n行电文,每行电文都已按下面规律译成密码:即第1个字母变成第26个字母,第2个字母变成第25 CAD中画垂线怎样不垂直 求一份人物以及动物的走跑跳运动规律,用PS和FLASH,都可以,要动画.急 马小虎在计算17×﹙□﹣9﹚时,将题目错看成17×□﹣9.他得到的结果与正确答案相差多少 一件西服按成本价加四成出售,后因季节原因滞销,又按原价打七折出售,这是它的售价为392元,问这件西服的成本价为多少元?卖出后能赚多少元?(一元一次方程解) CAD如何做一条线段的端点的垂线 如右图,在三角形ABC中,BC=3BD,三角形BDE的面积是三角形ABC的面积的十二分之一,则BE是AB的几分之几? 等边三角形ABC内一点P到A、B、C的距离为3,3√3,6,求三角形边长 若a²-2a+1的算术平方根是1-a,则a的取值范围是_____. 怎么把2个三角函数化成一个三角函数前面的系数怎么凑的? DOC三角形三边分别是3和5,那么第三边中线的取值范围是什么? 关于高一化学摩尔方面问题比较0.5mol N2和0.5molCO 下列物理量相同的是1分子数目 2原子的物质的量 3质量 4电子数目 5质子的物质的量 6标准状况下的体积A123 B246 C1234565 D全部 太阳出来绿莹莹,双手搂起地球村.植树减排两手抓,蓝天要高山要青.读了这句诗,你懂得了什么.好的我另加分. 已知:如图①所示,在△ABC和△ADE中,AB=AC,AD=AE,∠BAC=∠DAE,且点B,A,D在一条直线上,连接BE,CD,M,N分别为BE,CD的中点,下列结论:①be=cd;②d为ab的中点;③∠amn=90º-∠man/2 如图:AC长80km,CD长120km,DB长100km甲在A点,于AB之间来回走动,乙在C点,顺着长方形C-E-F-D走动.已知甲速5千米每时,乙速4千米每时,问:甲第一次从背后追上乙所在的地点,距离D点多少米? D、E分别为BC、AB的中点,则三角形BDE的面积是三角形ABC的面积的几分之几 请把我找点小数乘法比如1.1*1 如何用圆规画角 一组数据用散点+均值线+在均值横线上的误差线,这统计图叫什么名称?graphpad里可以选, excel能不能做?如图红色箭头所示,这种图叫什么名称?excel可以做吗?像这样的图,excel可以做吗?这种统计图 等角的余角相等是真命题还是假命题? 怎样用圆规画角 这两题怎么写? 样方法是否只能用来调查植物的种群密度?可以的话,举例说明一下,感激不尽啊,亲. 地球距月球最远和最近的距离是多少千米?(至少精确到1000km) 距太阳呢? 世界1000m纪录是多少? 调查作物植株上的蚜虫的密度采用什么方法? 我国发射的第一颗人造地球卫星运行1000km需要2分零5秒,5分钟能运行多少千米? 大学高数∫3x√(1-x^2)dx 求解耐克函数为什么耐克函数的图像分居在原点两侧 最小值怎么求解 我国发射的第一颗人造地球卫星运行1000km需要2分零5秒,5分钟能运行多少千米?【用比例知识解答】 英语在初二以上比较好的人进找出错误的句子并改正_, 1 I like your trouser .where did you get it ? 2 i don'tlike mice.i'm afraid of them . 3 a lot of people watch television every day. 4 we had a lovely weather when we were on holi 三角形两边长分别是3和5则第三边中线的取值范围是 在直角三角形abc中,CD是斜边AB上的高,则下列等式不成立的是A:向量AC的平方=向量AC*向量ABB:向量BC的平方=向量BA*向量BCC:向量AB的平方=向量AC*向量CDD:向量CD的平方=(向量AC*向量AB)*(向量BA*向 求此题答案, 已知圆O的半径为1,O为主标原点,AB是圆O的弦,四边形ABCD是以AB为边的正方形,点C,D在圆O外,AB的长为根号2,点A的坐标为【1.0】B的坐标是多少,OC的长是多少、 白天说白话,晚上说什么话?如上 2.371kg等于1000m 37.52等于多少m 已知圆O的半径为1,正方形abcd的边ab是圆o的弦,则od的最大值为 你话你怕用白话翻译是什么意思 那些动物是卵生的蛇是卵生的 已知三角形两边长为5和7,则第3边上的中线长M的取值范围是? 2012是真的吗?磁极真的会倒转吗?真的有小行星要撞地球吗?人类会全部消失吗? 几个高一化学有机题1. 某有机物12g完全燃烧,生成7.2gH2O和8.96LCO2(标准状况下),0.5mol此有机物的质量为30g.(1)求分子式 (2)又知此有机物具有弱酸性,能与金属钠反应,也能与碱溶液反应,试 美油轮尼日利亚海域遭海盗袭击 2名船澳洲林火因部队实弹演习引发 强风致火雄性鱼深夜发奇怪求偶声 扰乱英国居民港媒:监控丑闻令美众叛亲离 “去美国欧盟针对美监控拟推新法规 科技企业或军演引发澳大利亚山火肆虐 一名灭火飞美国国安局被指30天收集1240亿份奥巴马敦促国会通过移民改革法 称有利联合国继续准备销毁叙化武 瑞典提供运老汉与网友开房遇儿媳系假新闻 媒体致奥巴马敦促国会通过移民改革法 称有利法国登记失业人数再次上升两名美国船员在尼日利亚遭武装海盗绑架外媒:美伊和解让以色列沙特“很受伤”澳补习班遍地开花 全职补习老师人数增外媒:美监听默克尔手机激怒德国美国情报机构被爆监听35名国际政要电日本物价指数连续4个月同比上升揭秘胡万林狱中生活:声称攻克了癌症艾北京地铁10号线一天三故障 分时分段墨西哥一糖果厂爆炸1死20人失踪“美丽巴南”全国摄友摄影大赛作品家门口有学校,为何不能上你常在室外停车吗?看看有些什么讲究为什么“最危险的地方也不安全”理财产品收益下滑 本月底或有反弹集齐7张不同中奖票 最高奖金翻倍哟时速45公里,钢笔还能立在地板上“用过才说好”应成明星代言底线两地涉事幼儿园幼儿全面体检你常在室外停车吗?看看有些什么讲究万事通即使做到一万亿也算“小”买卖里瓦尔多宣布退役保护母亲河 300名市民种下净化树金银币收藏陷阱多专家:5招可辨真伪每小时200元 这样的工作你干不干?树荫下的眼睛立法规范幼儿教育已经迫在眉睫网购7天后悔期是自然日 遇小长假延一蒋家子弟,你知道自己属于蒋氏家族哪一春光里1100位市民暴走18公里
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘