动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Visual Basic教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Visual Basic教程 ]的信息

本月文章推荐
.用VB计算1 1=2.
.VB入门教程之二.
.函数名巧做局部变量.
.DirectX7.0使用心得(3).
.做个“网络助手”程序.
.用VB函数轻松访问系统注册表.
.用VB将命令行软件Windows化.
.VB入门教程之一.
.集合类:VBA集合对象的安全包装.
.用VB编写一个光驱保镖.
.破解Windows屏幕保护admin888.
.Unicode与Ansi.
.VB从零开始编外挂(三).
.浅议VB6字节数组和字符串的相互转.
.怎样在VB中控制Word.
.VisualBasic让表单一开始就显示在.
.走进VB6啃一块骨头.
.数据库的结构---VB数据库入门之(.
.API函数在VB中的应用.
.解决VisualBasic非正常退出一例.

VisualBasic中实现绘图区的大十字光标

发表日期:2006-2-27 |


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

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

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

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

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

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

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

OptionExplicit
PrivateOld_XAsSingle
PrivateOld_YAsSingle
PrivateisMouseDownAsBoolean
PrivateBox_X0AsSingle
PrivateBox_Y0AsSingle
PrivateBox_X1AsSingle
PrivateBox_Y1AsSingle
PrivatePenColorAsLong
PrivateCrossColorAsLong

PrivateSubForm_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
EndSub

PrivateSubpicDraw_MouseDown
(ButtonAsInteger,
ShiftAsInteger,XAsSingle,YAsSingle)
IfisMouseDown=TrueThen
'先前已经用鼠标定义了一个点
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
EndIf
EndSub

PrivateSubpicDraw_MouseMove(ButtonAsInteger,
ShiftAsInteger,XAsSingle,YAsSingle)
IfisMouseDown=TrueThen
'拖动鼠标来定义矩形的另外一个顶点,
此时擦除前一个矩形,绘制新的矩形
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
EndIf
Old_X=X
Old_Y=Y
EndSub->

上一篇:解决VisualBasic的Grid控件的打印问题 人气:3567
下一篇:充分扩充VisualBasic功能 人气:3212
浏览全部Visual Basic的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-12-2 OpenPNE中文 v2.12.5 for win 中
2008-12-2 谷秋精品课程软件课程版 v2.3
2008-12-2 晴天电影系统(带一键迅雷/自定义
2008-12-2 QQip138闪字程序
2008-12-2 SmartWeb企业智能建站系统 v1.0.2
2008-12-2 梦想不死个人主页 v2009
2008-12-2 开良ASP小偷程序生成器 v1.1
2008-12-2 toolxp.cnalexa世界排名查询 php
2008-12-2 腾讯留言板 v1.3
2008-11-29 Tencent Traveler 4.4
2008-11-29 龙卷风网络收音机 v3.0.0.0
2008-11-29 Intel Chipset Software Install
2008-11-29 TweakVI 1.0 Build 1100
2008-11-29 Opera 9.62 Build 10469
2008-11-29 MPlayer WW编译版 SVN-r28044(20
2008-11-29 NetTools网络工具v1.0.0破解版
2008-11-29 3DGallery三维体验1.1破解版
2008-11-29 SecretBook保密本v1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | OPEN参数生成器 | 弹出式窗口代码产生器 | 密码登录生成器 | 在线按钮生成器 | Meta标签生成器 | 多色彩特效字代码生成器 | 网页代码调试器 | 在线FTP登陆 | Flash取色器 | 配色代码对照表 | 配色辞典 | CSS生成器 | 广告代码 | 框架网页代码生成器 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | 在线调色板 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 元素周期表 | 健康查询 | 世界时间 | 万年历 | 二十四节气 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2009 www.knowsky.com All rights reserved | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成