-
vb教程之在系统菜单上添加自定义菜单项
VB提供了绘图的基本方法,如Pset、Line、Circle,能够绘出点、直线、圆等基本图形,但没有提供绘曲线的方法。其实,我们可以灵活运用基本绘图方法,来绘出所需要的曲线,甚至达到动画的效果。
一、VB坐标系介绍
VB里有三种坐标系,屏幕坐标系、窗体坐标系和窗体内的对象坐标系,这三种坐标系都是以其左上角为坐标原点,与平常使用的几何坐标系不一致,我们绘图时感到不习惯。VB允许编程人员自定义坐标系,根据需要定义坐标原点的位置。
自定义坐标系的方法是Scale,语法格式:
Scale (X1,Y1) - (X2,Y2)
其中: X1是绘图区域左上角的横坐标;
Y1是绘图区域左上角的纵坐标;
X2是绘图区域右下角的横坐标;
Y2是绘图区域右下角的纵坐标。
例如:Scale (-320,240) - (320,-240) 定义了绘图区域大小为640×480,坐标原点(0,0)在绘图区域中心。
二、绘制正弦动画曲线
启动VB6,新建标准EXE工程,添加一个PictureBox控件,两个CommandButton控件到窗体,其Caption属性值分别设为正弦曲线和结束。
双击Command1,打开代码编辑器窗口,相应事件的代码如下:
通用声明模块:
Const pi = 3.14159
Dim a
Private Sub Command1_Click() '画正弦曲线
'首先清除picture1内的图形
Picture1.Cls
'Scale方法设定用户坐标系,坐标原点在Picture1中心
Picture1.ScaleMode = 0
Picture1.ScaleMode = 3
Picture1.Scale (-10, 10)- (10, -10)
'设置绘线宽度
Picture1.DrawWidth = 1
'绘坐标系的X轴及箭头线
Picture1.Line (-10, 0)-(10, 0), vbBlue
Picture1.Line (9, 0.5)-(10, 0), vbBlue
Picture1.Line -(9, -0.5), vbBlue
Picture1.ForeColor = vbBlue
Picture1.Print "X"
'绘坐标系的Y轴及箭头线
Picture1.Line (0, 10)-(0, -10), vbBlue
Picture1.Line (0.5, 9)-(0, 10), vbBlue
Picture1.Line -(-0.5, 9), vbBlue
Picture1.Print "Y"
'指定位置显示原点O
Picture1.CurrentX = 0.5
Picture1.CurrentY = -0.5
Picture1.Print "O"
'重设绘线宽度
Picture1.DrawWidth = 2
'用For循环绘点,使其按正弦规律变化。步长值很小,使其形成动画效果
For a = -2 * pi To 2 * pi Step pi / 6000
Picture1.PSet (a, Sin(a) * 5), vbRed
Next
'指定位置显示描述文字
Picture1.CurrentX = pi / 2
Picture1.CurrentY = -7
Picture1.ForeColor = vbBlack
Picture1.Print "正弦曲线示意"
End Sub
运行后看效果。
以上程序代码在VB 6.0,Windows 98中调试通过。
一、VB坐标系介绍
VB里有三种坐标系,屏幕坐标系、窗体坐标系和窗体内的对象坐标系,这三种坐标系都是以其左上角为坐标原点,与平常使用的几何坐标系不一致,我们绘图时感到不习惯。VB允许编程人员自定义坐标系,根据需要定义坐标原点的位置。
自定义坐标系的方法是Scale,语法格式:
Scale (X1,Y1) - (X2,Y2)
其中: X1是绘图区域左上角的横坐标;
Y1是绘图区域左上角的纵坐标;
X2是绘图区域右下角的横坐标;
Y2是绘图区域右下角的纵坐标。
例如:Scale (-320,240) - (320,-240) 定义了绘图区域大小为640×480,坐标原点(0,0)在绘图区域中心。
二、绘制正弦动画曲线
启动VB6,新建标准EXE工程,添加一个PictureBox控件,两个CommandButton控件到窗体,其Caption属性值分别设为正弦曲线和结束。
双击Command1,打开代码编辑器窗口,相应事件的代码如下:
通用声明模块:
Const pi = 3.14159
Dim a
Private Sub Command1_Click() '画正弦曲线
'首先清除picture1内的图形
Picture1.Cls
'Scale方法设定用户坐标系,坐标原点在Picture1中心
Picture1.ScaleMode = 0
Picture1.ScaleMode = 3
Picture1.Scale (-10, 10)- (10, -10)
'设置绘线宽度
Picture1.DrawWidth = 1
'绘坐标系的X轴及箭头线
Picture1.Line (-10, 0)-(10, 0), vbBlue
Picture1.Line (9, 0.5)-(10, 0), vbBlue
Picture1.Line -(9, -0.5), vbBlue
Picture1.ForeColor = vbBlue
Picture1.Print "X"
'绘坐标系的Y轴及箭头线
Picture1.Line (0, 10)-(0, -10), vbBlue
Picture1.Line (0.5, 9)-(0, 10), vbBlue
Picture1.Line -(-0.5, 9), vbBlue
Picture1.Print "Y"
'指定位置显示原点O
Picture1.CurrentX = 0.5
Picture1.CurrentY = -0.5
Picture1.Print "O"
'重设绘线宽度
Picture1.DrawWidth = 2
'用For循环绘点,使其按正弦规律变化。步长值很小,使其形成动画效果
For a = -2 * pi To 2 * pi Step pi / 6000
Picture1.PSet (a, Sin(a) * 5), vbRed
Next
'指定位置显示描述文字
Picture1.CurrentX = pi / 2
Picture1.CurrentY = -7
Picture1.ForeColor = vbBlack
Picture1.Print "正弦曲线示意"
End Sub
运行后看效果。
以上程序代码在VB 6.0,Windows 98中调试通过。
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比