vb画线,点
VB绘制实时曲线方法
VB绘制实时曲线2010-09-14 09:28:30 作者:佚名来源:浏览次数:56在工控制软件中,实时曲线的绘制用途非常的广泛,它可以很直观的显示出监控数据的变化值和变化趋势。
在VB中实现曲线的绘制有很多种方法,本文介绍一种非常简单的方法来实现实时曲线的绘制。
在VB中实现实时曲线的绘在工控制软件中,实时曲线的绘制用途非常的广泛,它可以很直观的显示出监控数据的变化值和变化趋势。
在VB中实现曲线的绘制有很多种方法,本文介绍一种非常简单的方法来实现实时曲线的绘制。
在VB中实现实时曲线的绘制,要利用VB的PictureBox(图像)控件,和画线函数line(x1,y1)-(x2,y2)。
PictureBox控件,可以作为一个“容器”,在它的里面可以包含很多的对象。
也可以执行很多VB的内部函数。
要实现实时曲线的绘制,肯定要有外部实时数据的输入,这里假设是有一个数据从计算机的串口输入定义该数据变量为DataFromCom。
实时曲线反映的就是该数据。
“Width”打开VB6.0中文版,新建一个项目和窗体,修改窗体的属性,将“Heigh”修改为:8000,修改为在窗体中放如一个PictureBox控件。
然后重新定义PictureBox控件的一些基本属性,在VB中选中PictureBox控件,直接在它的属性框中,修改一些属性参数。
“名称”改为Pic。
“AutoRedraw”改为:True。
“BackColor”改为:&H00004000&(墨绿色背景颜色)。
”Heigh”改为:5000。
“Width”改为:8000。
如图1所示:然后要重新定义PictureBox控件的坐标系。
图像框的默认坐标系,是从左上角开始的,不符合我们的画线要求。
修改坐标系的目的是让曲线从图像框的左边正中间,开始画线。
修改图像框的坐标系,这里定义一个过程PicScale(),代码如下:Private Sub PicScale(picX As PictureBox)picX.Scale (0, PicX.ScaleHeight)-(picX.ScaleWidth, -PicX.ScaleHeight)End Sub一般的实时曲线显示的时候在屏幕的正中间有一条基准线,这里也要画出这条基准线,用一个过程PicMidleLine()来实现,代码如下:Private Sub PicMidleLine( picX As PictureBox)picX.Line (0, 0)-(picX.ScaleWidth, 0), vbGreen '画出中线End Sub要画一条实时曲线,坐标轴的设定很重要,在这里把X轴设定为时间轴,Y轴设定为数据轴。
VB画曲线——精选推荐
在工控制软件中,实时曲线的绘制用途非常的广泛,它可以很直观的显示出监控数据的变化值和变化趋势。
在VB中实现曲线的绘制有很多种方法,本文介绍一种非常简单的方法来实现实时曲线的绘制。
在VB中实现实时曲线的绘制,要利用VB的PictureBox(图像)控件,和画线函数line(x1,y1)-(x2,y2)。
PictureBox控件,可以作为一个“容器”,在它的里面可以包含很多的对象。
也可以执行很多VB的内部函数。
要实现实时曲线的绘制,肯定要有外部实时数据的输入,这里假设是有一个数据从计算机的串口输入定义该数据变量为DataFromCom。
实时曲线反映的就是该数据。
打开VB6.0中文版,新建一个项目和窗体,修改窗体的属性,将“Heigh”修改为:8000,“Width”修改为在窗体中放如一个PictureBox控件。
然后重新定义PictureBox控件的一些基本属性,在VB中选中PictureBox控件,直接在它的属性框中,修改一些属性参数。
“名称”改为Pic。
“AutoRedraw”改为:True。
“BackColor”改为:&H00004000&(墨绿色背景颜色)。
”Heigh”改为:5000。
“Width”改为:8000。
如图1所示:然后要重新定义PictureBox控件的坐标系。
图像框的默认坐标系,是从左上角开始的,不符合我们的画线要求。
修改坐标系的目的是让曲线从图像框的左边正中间,开始画线。
修改图像框的坐标系,这里定义一个过程PicScale(),代码如下:Private Sub PicScale(picX As PictureBox)picX.Scale (0, PicX.ScaleHeight)-(picX.ScaleWidth, -PicX.ScaleHeight)End Sub一般的实时曲线显示的时候在屏幕的正中间有一条基准线,这里也要画出这条基准线,用一个过程PicMidleLine()来实现,代码如下:Private Sub PicMidleLine( picX As PictureBox)picX.Line (0, 0)-(picX.ScaleWidth, 0), vbGreen '画出中线End Sub要画一条实时曲线,坐标轴的设定很重要,在这里把X轴设定为时间轴,Y轴设定为数据轴。
vb图形控件和图形方法
二.AutoSize 属性(逻辑类型)
➢ AutoSize属性值为Ture时,图片框的边界会 随着所装入图片的大小变化而变化。此时在设 计窗体过程中就应该特别小心,图片将不考虑 窗体上其他控件而自动调整大小,可能导致意 想不到的后果,如覆盖其他控件等。所以应慎 用,以免影响窗体界面的完整性。
三.Align属性(整数0~4)
二.Stretch属性(逻辑类型)
➢影响框控件Stretch属性设置为Fakse(默认值)时,可 根据图片的大小手工调整控件的大小,以达到满意的显 示效果;当设置为True时,将根据控件的大小来自动调 整图片的大小,这时若调整影像框的大小,可能会使图 片变形,影响图像的真实显示。
阶段2 影像框控件常用事件
任务2 图片框控件
阶段1 图片框控件常用属性 阶段2 图片框控件常用方法
阶段1 图片框控件常用属性
一.Picture 属性(字符串类型)
⑴ 设计时选取:在界面设计时,选中该图片框控件属性 窗口中该属性,在弹出的Load_Picture对话框中选择所 要显示的图片文件,相应的图片随之被加载到图片框中。 ⑵ 运行时装入:程序运行时,可用LoadPicture函数装 入图片到图片框控件中。
ScaleWidth属性:该属性值为容器自身的宽度值。 ScaleHeight属性:该属性值为容器自身的高度值。 CurrentX、CurrentY属性:分别表示当前点在容器内
的横坐标、纵坐标。
阶段2 改变容器坐标系的Scale方法
➢容器坐标系中,坐标系刻度单位的默认值为 “缇”(1缇≈0.01764毫米),容器的最小坐 标值为左上角坐标,容器的最大坐标值为右下 角坐标。 ➢利用Scale方法可以改变原点的坐标并随之改 变最大坐标值。 格式:容器名.Scale (x1,y1)-(x2,y2)
VB_绘图_直线_圆_矩形_自由绘图_实例
VB 绘图要求:在VB窗口中,添加一个Picture控件,在该控件中任意点击,拖拽画图画直线Dim a As IntegerDim b As IntegerPrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)If Button = 1 Thena = xb = yEnd IfEnd SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)If Button = 1 ThenPicture1.ClsPicture1.Line (a, b)-(x, y)End IfEnd Sub画矩形Dim a As IntegerDim b As IntegerPrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)If Button = 1 Thena = xb = yEnd IfEnd SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)If Button = 1 ThenPicture1.ClsPicture1.Line (a, b)-(a, y)Picture1.Line (a, b)-(x, b)Picture1.Line (x, b)-(x, y)Picture1.Line (a, y)-(x, y)End IfEnd Sub画圆Dim a As IntegerDim b As IntegerPrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)If Button = 1 Thena = xb = yEnd IfEnd SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)If Button = 1 ThenPicture1.ClsPicture1.Circle (a, b), Sqr((x - a) ^ 2 + (y - b) ^ 2)End IfEnd Sub自由绘图Dim a As IntegerDim b As IntegerPrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)If Button = 1 Thena = xb = yEnd IfEnd SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)If Button = 1 ThenPicture1.PSet (x, y)End IfEnd Sub实例:设计一个窗口,效果如下图,要求设置四个单选框,分别为画直线、画圆、画矩形、自由绘图,选中任意一项,便可在左侧的picture控件中任意地方拖拽出相应的图形。
VB6绘图
13
计算控件的大小代码
图片框控件: pyh = Picture1.Height pxw = Picture1.Width Print "pxw="; pxw, "pyh="; pyh 窗体控件: yh = Form1.Height xw = Form1.Width Print xw, yh
2014-9-28
华南理工学化学与化工学院方利国开发
26
椭圆绘制
命令:Circle (10000, 5000), 3000, vbRed, 0, 0, 2 Circle (10000, 5000), 3000, vbBlue, 0, 0, 0.5
2014-9-28
华南理工学化学与化工学院方利国开发
Picture1.Line (1000, 1000)-(1000, 5000), RGB(0, 0, 255)’颜色设置蓝 Picture1.Line (1000, 1000)-(9000, 1000), RGB(0, 255, 0)’颜色设置绿 Picture1.Line (1000, 5000)-(9000, 1000), RGB(255, 0, 0) ’颜色设置红 得下图3。
VB6.0 绘图基础
华南理工大学化学与化工学院方利国
2014-9-28
华南理工学化学与化工学院方利国开发
1
1、绘图空间的设置
在VB6.0中绘图其实和手工在图纸上绘图 是相当的,手工绘制需要的一些准备工作, 如图纸、铅笔、橡皮擦、三角板、圆规等 工具对应成计算中的各种设置和命令,绘 图时要做的第一件事是准备好图纸。在 VB6.0中常用的图纸是窗体及图片框控件, 当然其它能存放其他控件的控件均可以。
利用VB编程实现实时数据曲线绘制
信息技术 2005年第10期 中图分类号:TP311 文献标识码:B 文章编号:1009-2552(2005)10-0076-03利用VB编程实现实时数据曲线绘制关维娟,陈清华(安徽理工大学,淮南232001)摘 要:实时动态数据曲线的绘制与显示,是各种工业测控系统的重要功能。
而实现方法也不尽相同。
提出了一种基于VB编程,简单易懂的实时数据曲线绘制方法,实际使用证明完全能够满足实时监控要求。
文中通过一个实例介绍了其实现的具体方法。
关键词:测控系统;实时数据曲线;Visual BasicR ealization o f real-tim e d ata curve dra w ing using VB programmingG UAN Wei2juan,CHE N Qing2hua(Anhui U niversity of Science and T echnology,H u ainan232001,China) Abstract:Drawing and showing the real-time and dynamic data curve is an im portant function of the indus2 trial testing and controlling system,and various realizing methods are different.A sim ple method of real-time and dynamic data curve drawing based on VB programming is introduced in this paper,and it proved that the program could satis fy the real-time control requirements.It is illustrated by a coucrete exam ple.K ey w ords:testing and controlling system;real-time data curve;Visual Basic(VB)0 引言各种工业测控系统中,通常利用动态实时数据曲线,实时监测某点在现场工况变化下的控制稳定性。
EXCEL 用VBA画线
我想用VBA编写一个在工作表中指定单元格至指定单元格之间画一条直线程序(最好是自定义函数).如果哪位高手精于此道,请指教,不盛感激!最好是自定义函数,呵呵,一般来说没有用自定义函数来操作对像的,不过……下面的自定义函数可以画一条名称为给定名称线,位置在给定的两个单元格间。
说明:参数1为线的名称,参数2与3为画线的两个单元格,画线成功后函数获得说明,否则值为#value代码:Function DrawLine(LineName As String, xRan As Range, yRan As Range)On Error Resume NextDim xSh As WorksheetDim tStr As StringtStr = "已成生名为“" & LineName & "”从“" & xRan.Address(0, 0) & "”到“" & yRan.Address(0, 0) & "”的直线!"Application.Caller.Parent.Shapes(LineName).DeleteErr.ClearIf xRan.Column = yRan.Column ThenWith Application.Caller.Parent.Shapes.AddLine _(IIf(xRan.Top >= yRan.Top, xRan.Offset(1, 0).Left + xRan.Width / 2, yRan.Offset(1, 0).Left + yRan.Width / 2), _WorksheetFunction.Min(xRan.Offset(1, 0).Top, yRan.Offset(1, 0).Top), _IIf(xRan.Top < yRan.Top, xRan.Offset(1, 0).Left + xRan.Width / 2, yRan.Offset(1, 0).Left + yRan.Width / 2), _WorksheetFunction.Max(xRan.Top, yRan.Top)).Name = LineName.Line.ForeColor.SchemeColor = 10End WithElseWith Application.Caller.Parent.Shapes.AddLine _(WorksheetFunction.Min(xRan.Offset(0, 1).Left, yRan.Offset(0, 1).Left), _IIf(xRan.Left < yRan.Left, xRan.Top + xRan.Height / 2, yRan.Top + yRan.Height / 2), _WorksheetFunction.Max(xRan.Left, yRan.Left), _IIf(xRan.Left > yRan.Left, xRan.Top + xRan.Height / 2, yRan.Top + yRan.Height / 2)).Name = LineName.Line.ForeColor.SchemeColor = 10End WithEnd IfIf Err.Number ThenDrawLine = "#value"ElseDrawLine = tStrEnd IfEnd Function另外如何用VBA删除由上述程序生成的直线呢,能不能好人做到底,帮我解决这个困难Application.Caller.Parent.Shapes(LineName).Delete这句就是删除,感觉你只是要用不去理解,唉!还可以用Activesheet.Shapes(LineName).Delete来删除当前工作表中名为LineName的线。
VB环境中绘制数据曲线图
VB环境中绘制数据曲线图摘要:为了更好地为汛期气象服务提供有力的资料补充和保障,截至2010年底,通辽市气象局已建成区域自动气象站35个。
为使区域自动站在决策服务、预报预警调查等方面所提供的资料更加直观,本文介绍了利用Visual Basic软件编写程序,实现数据曲线绘制的方法和过程,VB6.0 提供了PictureBox 控件,利用该控件的属性和方法,可以把实时数据用曲线图的形式表达出来。
关键词:VB6.0实时数据曲线区域自动气象站在区域自动气象站中,当数据采集存储完成后,往往需要更直观的界面显示。
利用VB6.0 编程实现实时数据曲线的绘制与显示,可动态地监视某些关键气象要素值的变化情况与走向趋势,以便直观、便捷的进行分析来更好地做好气象服务工作。
基于以上的需求分析,将系统划分为4大功能模块。
1、数据库的连接。
该项需要实现与数据库的连接,在设置中,用户可以直接选择自己所在地的市局服务器。
以后进行的操作中将从所选服务器中进行气象要素数据的读取。
VB6.0实现SQLServer2000数据库的连接与断开的代码格式为:连接代码:Set conn=New ADODB.ConnectionSet rs = New ADODB.Recordsetconn.Open “Driver={SQL Server};Server=服务器IP或服务器名称;Database=数据库名称;Uid=用户名;Pwd=密码”断开代码:rs.CloseSet rs = Nothingconn.CloseSet conn = Nothing2、数据库内容的读取。
要把本辖区所有区域站数据逐一统计,在VB6.0的编程中要用到循环语句,例如要查询温度数据,我市现在数据库中存放的温度数据是小时数据,例如要查询单一站点某时间段内的温度数据,本文中是通过select 语句来实现的,主要语句描述为:select * from 表名where station=‘“ & 区站号&”‘and observetime between’” & 开始时间& “‘and’” & 结束时间&”‘“。
VB6图形方法详解
2、Line 方法完成后将修改”当前坐标“为终点坐标。其后的 Line 语句如果省略第一对坐标将以“当前坐标”为起点。如果已经用 Line 方法画了至少一条线,而且接下来要画的线的起点就是前面一条线的终点,可以省略第一对坐标,看例子。
3、颜色参数省略则使用 obj 的前景色。
例如:
Line(1000,1000)-(2000,2000)
SavePicture obj.Image,"c:\test.bmp"
在这之前你需要设置obj.AutoRedraw=True
Picture1.Circle (Pw / 2, 3 * Ph / 4), Ph / 4, , 3 * pi / 2, pi / 2
Picture1.FillStyle = 0
Picture1.FillColor = QBColor(0)
Picture1.Circle (Pw / 2, Ph/ 4), 200
Circle(1000,1200),800,QBColor(12),,,2
Circle(800,500),800,,,,0.5
3、画圆弧及扇形
圆周的一部分就是圆弧,如果从圆心连接两条直线到圆弧的两端,就是一个扇形。Circle 方法指定起始角和终止角就可以画出圆弧或者扇形(角度为负数)。
Line -(4000,4000)'以前面画的线的终点(2000,2000)为起点
Picturel.Line(100,500)-Step(1000,350)'终点是(1100,850)
Line Step(200,200)-Step(800,1000)'起点(4200,4200),终点(5000,5200)
VB教程(10)
13
Visual Basic程序设计教程
10.3.3 坐标属性 ·使用坐标属性可以更改容器的坐标刻度,也可以 自定义坐标系。
ScaleMode:设置坐标刻度,缺省值为1(缇) ScaleLeft:表示或设置对象左边界水平坐标 ScaleTop:表示或设置对象上边界垂直坐标 ScaleWidth:表示或设置对象内水平度量单位数 ScaleHeight:表示或设置对象内垂直度量单位数 CurrentX:当前输出的水平坐标。程序中使用。 CurrentY:当前输出的垂直坐标。程序中使用。 14 Visual Basic程序设计教程
图像一般是指绘制、摄制或印制的形象。
可将它们装载到图片框、影像框可窗体上
4
Visual Basic程序设计教程
【例10-1】设计一个模拟单摆 ·控件: 图片框控件Picture1:作单摆容器 直线控件Line1:作绳索 形状控件Shape1:作球(设计界面中为矩形) 定时器控件Timer1:控制摆动。
5
Visual Basic程序设计教程
·2个模块级变量A和D,表示摆动角度和方向。 ·2个事件过程: Form_Load,初始化界面和控件属性 Timer1_Timer,控制单摆的运动。
6
Visual Basic程序设计教程
Option Explicit Dim A As Integer, D As Integer ' 模块级变量,A表示角度,D表示方向 Const PI = 3.1415926 Private Sub Form_Load() Form1.Width = 1.3 * Form1.Height '设置窗体的宽度和高度比例 Picture1.Width = 1.5 * Picture1.Height '设置图片框的宽度和高度比例 Picture1.Scale (-150, -5)-(150, 195) '更改坐标系统 Shape1.FillStyle = 0 '使形状控件的填充模式为"实心 " Shape1.FillColor = vbRed '使形状控件填充红色 Shape1.BorderColor = vbRed '使形状控件的边界颜色为红色 Shape1.Width = 15 '按坐标系,更改形状控件大小 Shape1.Shape = 3 '使形状控件的形状为圆形 Line1.BorderColor = vbRed '使绳索颜色为红色 Line1.X1 = 0: Line1.Y1 = 0 '使绳索上端在原点(0,0)上 Picture1.AutoRedraw = True '使图片框的重绘属性为True Picture1.Line (-10, 0)-(10, 0) ' 顶端画一条固定绳索的横线 Timer1.Interval = 100 A = -20: D = -1 ' 设置初始角度和方向 End Sub
VB中实时曲线的绘制
VB中实时曲线的绘制在工控制软件中,实时曲线的绘制用途非常的广泛,它可以很直观的显示出监控数据的变化值和变化趋势。
在VB中实现曲线的绘制有很多种方法,本文介绍一种非常简单的方法来实现实时曲线的绘制。
在VB中实现实时曲线的绘制,要利用VB的PictureBox(图像)控件,和画线函数line(x1,y1)-(x2,y2)。
PictureBox控件,可以作为一个“容器”,在它的里面可以包含很多的对象。
也可以执行很多VB的内部函数。
要实现实时曲线的绘制,肯定要有外部实时数据的输入,这里假设是有一个数据从计算机的串口输入定义该数据变量为DataFromCom。
实时曲线反映的就是该数据。
打开VB6.0中文版,新建一个项目和窗体,修改窗体的属性,将“Heigh”修改为:8000,“Width”修改为在窗体中放如一个PictureBox控件。
然后重新定义PictureBox控件的一些基本属性,在VB中选中PictureBox控件,直接在它的属性框中,修改一些属性参数。
“名称”改为Pic。
“AutoRedraw”改为:True。
“BackColor”改为:&H00004000&(墨绿色背景颜色)。
”Heigh”改为:5000。
“Width”改为:8000。
如图1所示:然后要重新定义PictureBox控件的坐标系。
图像框的默认坐标系,是从左上角开始的,不符合我们的画线要求。
修改坐标系的目的是让曲线从图像框的左边正中间,开始画线。
修改图像框的坐标系,这里定义一个过程PicScale(),代码如下:Private Sub PicScale(picX As PictureBox)picX.Scale (0, PicX.ScaleHeight)-(picX.ScaleWidth, -PicX.ScaleHeight)End Sub一般的实时曲线显示的时候在屏幕的正中间有一条基准线,这里也要画出这条基准线,用一个过程PicMidleLine()来实现,代码如下:Private Sub PicMidleLine( picX As PictureBox)picX.Line (0, 0)-(picX.ScaleWidth, 0), vbGreen '画出中线End Sub要画一条实时曲线,坐标轴的设定很重要,在这里把X轴设定为时间轴,Y轴设定为数据轴。
vb第八章 绘 图
第八章绘图(2学时)一、教学内容本章讨论如何在VB6.0中编写图形应用程序二、目的要求通过对本章的学习,使学生理解VB中坐标系的概念;掌握用Line控件、Shape 控件画直线、矩形、圆(弧)、椭圆的方法;掌握图片框、图象框的常用属性、常用方法、图片的载入及应用;掌握用Pset方法、Line方法、Circle方法画点、矩形、圆(弧)、椭圆的方法;三、教学重点与难点教学重点: VB中坐标系,绘图方法的使用教学难点:容器控件的坐标,及用户自定义坐标系。
四、教学方法课堂教学为主。
适当提问,加深学生对概念的理解。
五、教学过程8.1坐标系统8.1.1 标准系统坐标系三要素:坐标原点、坐标度量单位、坐标轴的长度与方向。
坐标度量单位由容器对象的ScaleMode属性决定。
缺省时为Twip。
每英寸1440个Twip,20个Twip为一磅。
在VB中规定,用ScaleMode属性设置绘图长度的单位而且只能设置8种规格,用Scalex或Scaley语句可对不同的单位进行相互转换。
其格式如下:1、[object.]scalex(width[,fromscale][,toscale])2、[object.]scaley(width[,fromscale][,“”])1式为不同单位横坐标之间的转换,2式为不同单位纵坐标之间的转换“object”是ScaleMode方法的对象,缺省时指窗体“width”时横坐标数值“fromscale”是坐标的原始单位“toscale”是坐标值转换后的单位8.1.2 自定义坐标系统在VB种可以通过设置ScaleMode属性来建立新的坐标系统。
建立的新的坐标系统称为自定义系统。
用户可用ScaleMode属性设置坐标系统的刻度单位。
ScaleMode属性的取值及含义见Pg173表8.1所示。
1、定义新的坐标系统格式如下:[对象.]scaleleft=x[对象.]Scaletop=y其中,X是距离对象左边界的距离,Y是距离对象顶部的距离。
VB程序设计(第2版)教学课件8-12 绘图方法-Line方法-线宽与线型
只有DrawWidth=1时,才能产生不同的线型。
1
绘图应用
【示例】 在Picture1上绘制的直线、点线、点划线。
拓 展
你可以利用Line方法画出下面的图形吗?
总
结
Line方法可用于绘制直线及矩形。
Line方法格式:Line[[Step](x1,y1)] [Step](x2,y2), [颜色], [B,[F]]
线宽属性:DrawWidth 线型属性:DrawStyle
VB 程 序 设 计
绘图方法-Line方法-线宽与线型
问题引入
这些线段及图形 在VB中如何实现?
绘图 列设 表计 框
1 列 2 列 3
绘图Line方法 线宽与线型 绘图应用
1
(1) Line方法
Line方法
Visual Basic除了用图形控件来画图之外,也可用绘图方法来绘图。
Line方法可用于绘制直线及矩形。 【Line方法一般格式】 [对象名.] Line[[Step](x1,y1)] [Step](x2,y2), [颜色], [B,[F]]
若省略,则用ForeColor属性值。可用RGB函数或QBColor函数指定颜色。 ⑹ B:选择B表示画矩形。
⑺ F:F必须与B同时使用。若只用B不用F,则矩形的填充由FillColor和
FillStyle属性决定。
2
线宽与线型
在画线时经常需要设置线宽(DrawWidth)和线型 (DrawStyle)属性。
1
【说明】
Line方法
⑴ 对象名:指绘图容器对象,若省略则指当前窗体。 ⑵ (x1,y1):指起点坐标或矩形的左上角坐标,若省略则为当前坐标。 ⑶ (x2,y2):指终点坐标或矩形的右下角坐标。 ⑷ Step:表示与当前坐标的相对位置。
VB绘图教程
第6章绘图图形是计算机应用中令人感兴趣的内容。
VB对图形信息有很强的处理能力,包括使用控件自身的属性方法以各种形式显示图形;提供绘制一般的几何图形的内部控件;还有一批支持直接绘图、动态显示,以及设置颜色的对象属性、函数和方法等。
6.1Visual Basic 的坐标系统6.2对象的动态调整6.3图形控件6.4 用代码画图6.5颜色6.1 Visual Basic 的坐标系统坐标系统是绘图的基础.在VB中,屏幕坐标用于窗体的定位,每个窗体都有自己的坐标系统。
也就是说,VB的坐标是针对窗体或窗体上的控件而设计的,因此称为对象坐标系统。
VB的坐标系统分为默认规格(Default Scale);标准规格(Standard Scale)和自定义(Custom Scale)3类。
1.默认规格坐标系2.标准规格坐标系3.自定义规格坐标在默认规格坐标中,对象的左上角坐标为(0,0),当沿着水平向右移动和沿垂直轴向下移动时,坐标值增加。
对象和Top和Left 属性指定了该对象左上角的距原点在垂直方向和水平方向的偏移量。
(0,0)此点确定控件位置1.默认规格坐标系每个对象都有自己的尺寸,水平方向的宽度用属性Width来表示,垂直方向的高度用Height来表示。
单位:Twip(默认)、点(Point)、厘米和英寸1厘米约等于567Twip1 英寸约等于1440Twip72点等于1英寸。
注:vbUser 和vbPixels 不能用于打印机。
除了用Twip 作为坐标系的量度单位外,用户还可以使用标准规格选择其他的量度单位。
标准规格通过对象的“ScaleMode ”属性定义。
在程序设计阶段,从属性窗口找到ScaleMode 属性并且单击向下箭头,如图下拉列表中,从中选择所需要的量度规格。
值文字常数描述0vbUser 自定义1vbTwips 默认值,以Twip 为单位2vbPoint 以点(Point)为单位3vbPixels 像素4vbCharacters 字符5vbInches 以英寸为单位6vbMillimeters 以毫米为单位7vbCentimeters 以厘米为单位2.标准规格坐标系ScaleMode属性可在设计阶段设置,也可通过程序代码设置,例如:Form1.ScaleMode=2Picture1.ScaleMode=7一般情况下,VB的绘图方法使用以Twip为单位的坐标系统,该系统可由程序员人为地缩放。
VB6.0第七章-图形操作
可视化程序设计——第七章 图形操作
上页
下页
9
Rnd 函数:
Rnd[(number)] 返回一个包含随机数值的 Single 返回值 如果 number 的值是 Rnd 生成 小于 0 每次都使用 number 作为随机 数种子得到的相同结果。 大于 0 序列中的下一个随机数。 等于 0 最近生成的数。 省略 序列中的下一个随机数。
可视化程序设计——第七章 图形操作
上页
下页
14
7.2 绘图
例: picture1.Line(20,20)-(100,120) “画线” picture1.Line-(1000,1200) 从当前位置画线” picture1.Line(20,20)-(100,120),,B “画矩形” picture1.Line(20,20)-(100,120),,BF “画矩形,并填充”
上页 下页
13
可视化程序设计——第七章 图形操作
7.2 绘图
Line:画线或框的方法。 格式:[对象名称.]Line[(x1,y1)]-(x2, y2)[,颜色][,B][F] 其中:对象可以是窗体或图形框。 (x1,y1) ,(x2,y2)为线段的起终点 坐标或矩形的左上角右下坐标。 关键字B表示画矩形,关键字F表示用画矩 形的颜色来填充矩形。
可视化程序设计——第七章 图形操作
上页
下页
15
7.2 绘图
circle:画圆、椭圆、圆弧、扇形。 [对象.]Circle(x,y),r[,颜色][,起始角][, 终止角][,边比率] 例: picture1.Circle(100,100),50,Qbcolor(5) ‘画圆 picture1.Circle(100,100),50,,,,3 ‘画椭圆 picture1.Circle(100,100),50,,0,3.14/2 ‘画圆弧 picture1.Circle(100,100),50,,-0.0001,-3.14/2 ‘画扇形
在VB6.0中采用定点画线的方法打印表格
Printer.CurrentX = 9250 '页码置于左上角
Printer.CurrentY = 200
Printer.FontSize = 10
Printer.Print "第 " + Trim(Str(j)) + " 页 共 " & Trim(Str(ii)) + " 页"
TmpLowerPageMoney = 0# '每页合计金额 ------ 新页开始清零
Printer.CurrentX = 4000
Printer.CurrentY = 200
Printer.FontSize = 16
Printer.Print "湘潭市维民贸易有限公司入库单 "
v11 = v10 + MSFlexGrid1.ColWidth(9) * 1.2 '单价-----进货价
v12 = v11 + MSFlexGrid1.ColWidth(10) * 1.3 '金额
v13 = 11500
Dim m As Integer '总记录数
Dim N As Integer '每页记录数
Dim ii As Integer '总页数
Dim j As Integer '页码数
Dim k As Integer '每页起始记录控制
Dim TmpLowerPageMoney As Single '每页合计金额
保存
Command3
名称
Cmdprint
打印命令
用VB编写画图程序
4.代码设计(1)引入命名空间:Imports System.Drawing.Drawing2D(2)在FrmPaint类里定义全局变量和mSelect枚举结构:1.Private g As Graphics '绘图句柄2.Private pstart As Point, pend As Point '定义画图的起始点,终点3.Private mChoice As Integer'选择图形枚举4.Private mWidth As Integer'画笔宽度5.Private mIcon As Icon '用户选择图标6.Private Enum mSelect '选择图形类别枚举7. Pencil '铅笔8. Line '直线9. Ellipse '椭圆10. FillEllipse '填充椭圆11. StyleEllipse '风格椭圆12. Rec '矩形13. FillRec '填充矩形14. StyleRec '风格矩形15. Icon '图标16. Eraser '橡皮17.End Enum(3)在FrmPaint的Load事件中初始化全局变量和Graphics对象:1.Private Sub FrmPaint_Load(ByVal sender As System.Object, _2.ByVal e As System.EventArgs) Handles MyBase.Load3.4. g = Me.picPaint.CreateGraphics '获取PictureBox的绘图句柄5. mChoice = mSelect.Pencil '默认选择选铅笔作为绘图工具6. mWidth = 1 '初始化画笔宽度7.End Sub(4)定义转换坐标起点和终点的过程Convert_Point()。
VB图形和绘图操作
VB图形和绘图操作VB图形和绘图操作⼀、坐标:X值:是沿X轴的位置,窗体中最左端是缺省位置0Y值:是沿Y轴的位置,窗体中最上端是缺省位置0X,Y的值可以⼩于0,也可以⼤于容器宽度或⾼度⼆、坐标值的刻度:缺省使⽤缇(Twip)为测量单位. 「Twip」中⽂译为"缇",是⼀种和屏幕⽆关的长度单位,⽬的是为了让应⽤程序元素输出到不同设备时都能保持⼀致的计算⽅式。
打印机的⼀个点,即我们说的“磅”,相当于20个 Twips,⼀英吋相当于 1440个Twips, ⼀公分(厘⽶)则相当于567 Twips ,也就是说,如果屏幕上某个对象的长度是1440 Twip的话,将会印出⼀英吋来。
由于我们在屏幕上操作时会习惯⽤「像素」(也就是我们常说的屏幕分辨率DPI,系统可以设置各种DPI值),所以我们直接输⼊数字时必须再将「像素」换算成「Twip」。
当DPI设置为96时(系统默认值),1个像素=(1/96)*1440=15 Twip;当DPI设置为120时,1个像素=(1/120)*1440=12 Twip。
当DPI为96时,如果希望窗体的⾼是「400」像素,宽是「300」像素,属性的设定值就是: Height=400×15=6000 Twip,Width =300×15=4500 Twip.在VisualBasic应⽤程序中,屏幕(Screen)是⼀个对象。
其Width和Height属性以Twip为单位反映出屏幕的宽度和⾼度。
⽽TwipsPerPixelX和TwipsPerPixelY这两个属性只与硬件有关,⽽与屏幕上可设定的分辨率⽆关。
将Width除以TwipsPerPixelX可以计算出屏幕的⽔平分辨率(像素数),同样将Height除以TwipsPerPixelY也可以计算出屏幕的垂直分辨率。
要想保持⼀个窗⼝或是控件的物理⼤⼩不变,只要计算出设计时的分辨率与实际运⾏时的分辨率的⽐值,然后根据这个⽐值来调节窗⼝和其中的控件的⼤⼩和相对位置,以及显⽰的字体尺⼨,就可以保持同⼀应⽤程序的窗⼝在不同的系统下的物理外观(当然在不同尺⼨的显⽰器上只能保持⽐例不变,物理⼤⼩还是不同的)。
画板系统的设计与实现.
画板系统的设计与实现本工程以一个比较有趣的例子,来说明如何使用Visual Basic来开发Windows应用程序。
本工程将使用VB来开发一个类似“画图”软件的程序,通过此程序,我们可以实现用鼠标画直线、矩形以及不规则线等,可以控制笔线粗细等功能。
本系统可以完成以下任务:●通过自制调色板选取画笔的前景色和背景色。
●用户可以设置控制画笔的粗细,颜色。
●可以画点、线(直线和不规则线)、矩形等。
●指示鼠标坐标,前景背景,按钮工具的信息等。
首先,现在窗体上添加各种控件,如图1-1、图1-1画图板的设计窗口图1-2画图板的运行窗口本系统采用的主要原理:●系统初始化:完成系统的各项初始化。
Dim nToolNum, nMyForeColor, nMyBackColor‘被访问的工具按钮、前景、背景Dim nStartX, nStartY, nEndX, nEndY As Integer‘指定开始和结束坐标Dim nLineWidth As Integer‘指定线宽Dim DrawOrNot As Boolean ‘是否开始画图Private Sub Form_Load()‘初始化各项参数nToolNum = 0nLineWidth = 1DrawOrNot = FalsenMyForeColor = RGB(0, 0, 0)nMyBackColor = RGB(255, 255, 255)DrawPic.ForeColor = nMyForeColorDrawPic.BackColor = nMyBackColorEnd Sub●在颜料盒中选定前景和背景:Private Sub Label1_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)If (Button = 1) Then‘如果是左键,则进行前景颜色设置ForeSee.BackColor = Label1(Index).BackColor‘使用控件数组获取颜色DemoLine.BorderColor = ForeSee.BackColor‘显示线的颜色nMyForeColor = ForeSee.BackColorDrawPic.ForeColor = ForeSee.BackColorEnd IfIf (Button = 2) Then‘如果是右键,则进行背景颜色设置BackSee.BackColor = Label1(Index).BackColorLineCon.BackColor = BackSee.BackColornMyBackColor = BackSee.BackColorEnd IfnMyForeColor = ForeSee.BackColornMyBackColor = BackSee.BackColorEnd Sub●用滚动条控制画笔的线宽:Private Sub HScroll1_Change()LineCon.BackColor = BackSee.BackColorDemoLine.BorderWidth = HScroll1.ValueDrawPic.DrawWidth = HScroll1.ValueEnd Sub●用鼠标进行画图的过程控制:Private Sub DrawPic_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)‘依据按下的工具值,来进行坐标和作图方式的选择即DrawMode赋值,分为正常和异或(分别取值13和7)Select Case nToolNumCase 1DrawPic.CurrentX = X: DrawPic.CurrentY = YDrawPic.DrawMode = 13Case 2nStartX = X: nStartY = YnEndX = X: nEndY = YDrawPic.DrawMode = 7Case 3nStartX = X: nStartY = YnEndX = X: nEndY = YDrawPic.DrawMode = 7nStartX = X: nStartY = YCase 4If Button = 1 ThenDrawPic.ForeColor = nMyForeColorElseDrawPic.ForeColor = nMyBackColorEnd IfnStartX = X: nStartY = YDrawPic.DrawMode = 7DrawPic.PSet (nStartX, nStartY), DrawPic.ForeColorCase 5DrawPic.CurrentX = X: DrawPic.CurrentY = YDrawPic.DrawMode = 13nStartX = X: nStartY = YEnd SelectEnd SubPrivate Sub DrawPic_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) ‘依据鼠标的移动来进行作图,并根据鼠标的左右键判断用前景还是背景作图If Button <> 0 ThenIf Button = 2 ThenDrawPic.ForeColor = nMyBackColorElseDrawPic.ForeColor = nMyForeColorEnd IfSelect Case nToolNumCase 1DrawPic.Line -(X, Y), DrawPic.ForeColorCase 2DrawPic.Line (nStartX, nStartY)-(nEndX, nEndY), Not (DrawPic.ForeColor)DrawPic.Line (nEndX, nEndY)-(X, Y), Not (DrawPic.ForeColor)nStartX = X: nStartY = YCase 3DrawPic.Line (nStartX, nStartY)-(nEndX, nEndY), Not (DrawPic.ForeColor), BDrawPic.Line (nEndX, nEndY)-(X, Y), Not (DrawPic.ForeColor), BnStartX = X: nStartY = YCase 4DrawPic.PSet (X, Y), nMyForeColorCase 5DrawPic.Line -(X, Y), nMyBackColorEnd SelectEnd IfLabel4.Caption = "X: " & X & " Y: " & Y‘显示鼠标的坐标位置End SubPrivate Sub Drawpic_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) ‘依据按下的工具值,来用正常的绘图方式将画好的图重新绘制一遍,使在鼠标移动过程中的异或方式画的图被覆盖。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
End Sub
Public Function Cir1(x As Single)
Form1.Circle (Form1.ScaleWidth / 2, Form1.ScaleHeight / 2), x, vbRed
End Function
Private Sub cmdClear_Click()
把“Dim graph As Graphics = Me.CreateGraphics”挪到“Button1_Click”事件内,调试过成功!
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Line (X1, Y1)-(X2, Y2), , B
X1 = X2
Y1 = Y2
End Sub
(3)设计一个能分别输入边长和半径,并计算出正方形和圆面积的程序。程序界面自行设计,用二个命令按钮驱动正方形和圆面积的计算,二个文本框输入边长和半径。在界面上生成一个圆和一个正方形形状控件,实心,内填红色,在计算面积时其大小随参数同步变化。边长和半径的单位为缇。
Form1.Cls
End Sub
Private Sub cmdRectangle_Click()
x_rectangle = txtRectangle '接收正方形的边长
Rec1 (x_rectangle)
End Sub
Public Function Rec1(y As Single)
Dim g As Graphics = PictureBox1.CreateGraphics
g.DrawLine(Pens.Red, a, b, e.X, e.Y)
g.Dispose()
End Sub
End Class
点的画法
线的画法
a = e.X
b = e.Y
g.Dispose()
End Sub
Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
End Function
Private Sub Form_Load()
End Sub
(4)画出矩形具体的要设置的属性主要是FILLSTLLE为0,FILLCOLOR为红色
Private Sub form_Click()
Line (600, 600)-(5000, 600)
Line (600, 600)-(600, 2000)
Y1 = Me.ScaleHeight / 2
End Sub
Private Sub Timer1_Timer()
Randomize
X2 = Int(101 * Rnd) * 10 '这里我乘了10,如果生成0-100的数,在坐标系上太小了,看不清
Y2 = Int(101 * Rnd) * 10
Dim g As Graphics = PictureBox1.CreateGraphics
g.DrawEllipse(Pens.Red, New RectangleF(e.X, e.Y, 2, 2))
g.FillEllipse(Brushes.Red, New RectangleF(e.X, e.Y, 2, 2))
End Class
(2)画点
Private Sub Picture1_Click()
Const PI As Single = 3.1415926
Picture1.ScaleMode = 3
Picture1.Scale (-2 * PI, 2)-(2 * PI, -2)‘为什么要乘个3.1415926啊。
Dim x_radius As Single, x_length 'x_radius标识圆的半径,x_length标识矩形的长度
Private Sub cmdCircle_Click()
x_radius = txtRadius '接收圆半径的值
Cir1 (x_radius)
PictureBox1.BackColor = Color.White
End Sub
Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
Dim graph As Graphics = Me.CreateGraphics
Dim pen2 As Pen = New Pen(Color.Green, 3)
graph.DrawLine(pen2, 400, 400, 500, 200)
End Sub
Picture1.PSet (0, 0), RGB(0, 0, 255) 'terval设置为800
Option Explicit
Dim X1, Y1, X2, Y2
Private Sub Form_Load()
X1 = Me.ScaleWidth / 2
Form1.Line (Form1.ScaleWidth / 2 + 1000, Form1.ScaleHeight / 2 + 1000)-(Form1.ScaleWidth / 2 + 1000 + y, Form1.ScaleHeight / 2 + 1000 + y), vbRed, B
在vb中画线和点的集合
(1)vb画线
Public Class Form1
Dim a As Single
Dim b As Single
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Picture1.ForeColor = RGB(255, 255, 0)
Picture1.DrawWidth = 3
Picture1.Line (0, -2)-(0, 2)
Picture1.Line (-2 * PI, 0)-(2 * PI, 0) '绘制X轴和Y轴
Picture1.DrawWidth = 8
Line (600, 2000)-(5000, 2000)
Line (5000, 600)-(5000, 2000)
End Su
(5)VB用LINE画直线
line(x1.y1,x2.y2)