分享

VB基本绘画

 nxhujiee 2019-11-21

PSet 方法:将对象上的点设置为指定颜色。相当画点
语法:object.PSet [Step] (x, y), [color]
例如:picture1.pset (100,100) ,vbred

--------------------------------------------------------------------------------------------

point 方法:按照长整数,返回在 Form 或 PictureBox 上所指定磅的红-绿-蓝 (RGB) 颜色。不支持命名参数
语法:object.Point(x, y)
例子:form1.point(100,100)'返回(100,100)这一点的颜色

-------------------------------------------------------------------------------------

Line 方法:在对象上画直线和矩形。
语法:object.Line [Step] (x1, y1) [Step] (x2, y2), [color], [B][F]
参数:B 可选的。如果包括,则利用对角坐标画出矩形。
          F 可选的。如果使用了 B 选项,则 F 选项规定矩形以矩形边框的颜色填充。不能不用 B 而用 F。如果不用 F 光用 B,则矩形用当前的 FillColor 和 FillStyle 填充。FillStyle 的缺省值为 transparent。
例如:form1.Line (100, 100)-(500, 500), vbRed, BF
当然,也可以使用line控件画直线。这里不详细介绍

--------------------------------------------------------------------------------------------

Circle 方法:在对象上画圆、椭圆或弧
语法:object.Circle [Step] (x, y), radius, [color, start, end, aspect]
参数:radius 指半径。
      start, end 可选的。 Single (单精度浮点数),当弧、或部分圆或椭圆画完以后,start 和 end 指定(以弧度为单位)弧的起点和终点位置。其范围从 -2 pi 到 2 pi 。起点的缺省值是0; 终点的缺省值是2 * pi。
      aspect 可选的。 Single (单精度浮点数),圆的纵横尺寸比。缺省值为 1.0,它在如何屏幕上都产生一个标准圆(非椭圆)。通过改变比例可画椭圆
说明:
①想要填充圆,使用圆或椭圆所属对象的 FillColor 和 FillStyle 属性。只有封闭的图形才能填充。封闭图形包括圆、椭圆、或扇形。
②画部分圆或椭圆时,如果 start 为负,Circle 画一半径到 start,并将角度处理为正的;如果 end 为负,Circle 画一半径到 end,并将角度处理为正的。Circle 方法总是逆时针(正)方向绘图。当它们的值为负值时,VB会自动画一条连接弧的半径,若想去掉,则必须保证两个值都为正,即加上负号
③画圆、椭圆或弧时线段的粗细取决于 DrawWidth 属性值。在背景上画圆的方法取决于 DrawMode 和 DrawStyle 属性值。
④画角度为 0 的扇形时,要画出一条半径(向右画一水平线段),这时给 start 规定一很小的负值,不要给 0。
⑤"."可以省略语法中间的某个参数,但不能省略分隔参数的逗号。您指定的最后一个参数后面的逗号是可以省略的。

例子:请看下面画圆的代码。

--------------------------------------------------------------------------------------------

其他:

Scale 方法

用以定义 Form、PictureBoxPrinter 的坐标系统。不支持命名参数

语法

object.Scale (x1, y1) - (x2, y2)

Scale 方法的语法包含下列部分:

 

部分 描述
object 可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,则带有焦点Form 对象缺省为 object
x1, y1 可选的。均为单精度值,指示定义 object 左上角的水平(x-轴)和垂直(y-轴)坐标。这些值必须用括号括起。如果省略,则第二组坐标也必须省略。
x2, y2 可选的。均为单精度值,指示定义 object 右下角的水平和垂直坐标。这些值必须用括号括起。如果省略,则第一组坐标也必须省略。

 

说明

Scale 方法使您能够将坐标系统重置到所选择的任意刻度。Scale运行时的图形语句以及控件位置的坐标系统都有影响。

如果使用不带参数的 Scale(两组坐标都省略),坐标系统将重置为

CurrentX、CurrentY 属性

返回或设置下一次打印或绘图方法的 水平 (CurrentX) 或垂直 (CurrentY) 坐标。设计时不可用。

语法

object.CurrentX [= x]
object.CurrentY [= y]

 CurrentXCurrentY 属性语法包含下面部分:

 

说明

坐标从对象的左上角开始测量。在对象的左边 CurrentX 属性值为 0,上边的 CurrentY 为 0。坐标以为单位表示,或以 ScaleHeight、ScaleWidth、ScaleLeft、ScaleTopScaleMode 属性定义的度量单位来表示。

用下面的图形方法时,CurrentXCurrentY 的设置值按下述说明改变:

 

方法 设置 CurrentX, CurrentY 为:
Circle 对象的中心。
Cls 0,0。
EndDoc 0,0。
Line 线终点。
NewPage 0,0。
Print 下一个打印位置。
Pset 画出的点。

 

 

FillStyle 常数

VtFillStyle 常数提供指定用于绘制背景的填充类型的选项。

 

常数 描述
VtFillStyleNull 无填充(背景透出)。
VtFillStyleBrush 纯色或图案填充。

 

 

FillColor 属性

返回或设置用于填充形状的颜色:FillColor 也可以用来填充由 CircleLine 图形方法生成的圆和方框。

语法

object.FillColor [ = value]

FillColor 属性语法包含下面部分:

 

部分 描述
Object 对象表达式,其值是“应用于”列表中的一个对象。
Value 值或常数,确定填充颜色,“设置值”中有详细描述。

 

设置值

value 的设置值如下:

 

设置值 描述
标准 RGB 颜色 在程序中提供 RGBQBColor 函数的颜色集
系统缺省颜色 “对象浏览器” 中的 Visual Basic (VB) 对象库的系统颜色常数常数指定的颜色。Microsoft Windows 运行环境替换用户在控制面板设置中的选择。

 

缺省情况下,FillColor 设置为 0(黑色)。

说明

Form 对象之外,如果 FillStyle 属性设置为缺省值,1(透明),则忽略 FillColor 设置值。

 

DrawMode 属性

返回或设置一个值,以决定图形方法的输出外观或者 ShapeLine 控件的外观。

语法

object.DrawMode [= number]

DrawMode 属性语法包含下面部分:

 

部分 描述
object 对象表达式,其值是“应用于”列表中的一个对象。
Number 整型值,指定外观,“设置值”中有详细描述。

 

设置值

number 的设置值为:

 

常数 设置值 描述
VbBlackness 1 黑色。
VbNotMergePen 2 非或 - 与设置值 15 相反 (Merge Pen)。
VbMaskNotPen 3 与非笔 - 背景色以及画笔反相二者共有颜色的组合。
VbNotCopyPen 4 非复制笔 - 设置值 13 (Copy Pen) 的反相
VbMaskPenNot 5 与笔非 - 画笔以及显示反相二者共有颜色的组合。
VbInvert 6 反转 - 显示颜色的反相
VbXorPen 7 异或笔 - 画笔的颜色以及显示颜色的组合,只取其一。
VbNotMaskPen 8 非与笔 - 设置值 9 (Mask Pen) 的反相。
VbMaskPen 9 与笔 - 画笔和显示二者共有颜色的组合。
VbNotXorPen 10 非异或笔 - 方式 7 的反相 (Xor Pen)。
VbNop 11 无操作 - 输出保持不变。该设置实际上关闭画图。
VbMergeNotPen 12 或非笔 - 显示颜色与画笔颜色反相的组合。
VbCopyPen 13 复制笔(缺省值) - 由 ForeColor 属性指定的颜色。
VbMergePenNot 14 或笔非 - 画笔颜色与显示颜色的反相的组合。
VbMergePen 15 或笔 - 画笔颜色与显示颜色的组合。
VbWhiteness 16 白色。

 

说明

当用 ShapeLine 控件,或者用图形方法画图时,使用这个属性产生可视效果。Visual Basic 将绘图模式的每一个像素与现存背景色中相应的像素做比较,然后进行逐位比较操作。例如,设置值 7(异或笔)用 Xor 操作符将绘图模式像素和背景像素组合起来。

DrawMode 设置值的真正效果,取决于运行时所画线的颜色与屏幕已存在颜色的合成。对于设置值 1,6,7,11,13 和 16 可以最可靠地预知该属性的输出结果。

 

DrawStyle 属性

返回或设置一个值,以决定图形方法输出的线型的样式。

语法

object.DrawStyle [= number]

DrawStyle 属性语法包含下面部分:

 

部分 描述
Object 对象表达式,其值是“应用于”列表中的一个对象。
Number 整数,指定线型,“设置值”中有详细描述。

 

设置值

number 的设置值为:

 

常数 设置值 描述
VbSolid 0 (缺省值)实线
VbDash 1 虚线
VbDot 2 点线
VbDashDot 3 点划线
VbDashDotDot 4 双点划线
VbInvisible 5 无线
VbInsideSolid 6 内收实线

 

说明

 DrawWidth 属性设置为大于 1, DrawStyle 属性设置值为 1 到 4 会画一条实线( DrawStyle 属性值不改变)。若 DrawWidth 设置为 1 DrawStyle 产生的效果如前面表中的各设置值所述。

DrawWidth 属性

返回或设置图形方法输出的线宽。

语法

object.DrawWidth [= size]

DrawWidth 属性语法具有下列组成部分:

 

部分 描述
object 对象表达式,其值是“应用于”列表中的一个对象。
size 数值表达式,其范围从 1 到 32,767。该值以像素为单位表示线宽。缺省值为 1,即,一个像素宽。

 

说明

增大该属性值会增加线的宽度。如果 DrawWidth 属性值大于 1,DrawStyle 属性值设置为 1 到 4 时会画出一条实线来(DrawStyle 属性值不会改变)。将 DrawWidth 设置为 1,允许 DrawStyle 产生 DrawStyle 属性表中列出的结果。

---------------------------------------------------------------------------------------------

使用 Shape 控件

 

可用 Shape 控件在窗体、框架或图片框中创建下述预定义形状:矩形、正方形、椭圆形、圆形、圆角矩形或圆角正方形。

 

可以设置任意绘制在窗体上的形状的形状样式、颜色、填充样式、边框颜色和边框样式。

完成简单功能时,可用形状控件创建多种形状而无需编写代码。要实现更高级的功能,应使用 Line 和 Circle 方法。

详细信息 关于在运行时使用 Line 方法绘制直线、矩形、填充的方框,或者关于使用 Circle 方法绘制圆、椭圆、圆弧的详细信息,请参阅“使用文本和图形”中的“使用图形方法”。

预定义的形状

Shape 控件的 Style 属性提供了六种预定义的形状。下表列出所有预定义形状、形状值和相应的 Visual Basic 常数:

 

形状 样式 常数
矩形 0 vbShapeRectangle
正方形 1 vbShapeSquare
椭圆形 2 vbShapeOval
圆形 3 vbShapeCircle
圆角矩形 4 vbShapeRoundedRectangle
圆角正方形 5 vbShapeRoundedSquare

 

 

Fill 和 Line 样式

可用 FillStyle 和 BorderStyle 属性对绘制在窗体上的任意形状设置填充样式和边框样式。

FillStyle 属性和 Style 属性一样都提供了若干预定义的填充样式图案。其中包括:实线、透明、水平线、垂直线、向上对角线、向下对角线、十字线和对角十字线。

BorderStyle 属性提供若干预定义的边框样式。其中包括:透明、实线、虚线、点线、点划线、双点划线和内实线。

详细信息 FillStyle 和 BorderStyle 属性都提供了代表上面所列样式的常数。关于详细信息,请参阅《语言参考》的“FillStyle 属性”和“BorderStyle 属性”。

设置 Color 属性

可用 BackColor 和 FillColor 属性为形状和形状的边框添加颜色。

设计时,可从 Shape 控件的“属性”窗口中选定填充或边框颜色属性,然后从提供的调色板或系统颜色中选择要设置的颜色。

为在运行时设置颜色,可使用 Visual Basic 颜色常数(例如,vbGreen)或系统颜色常数(例如 vbWindowBackground),还可使用 RGB 函数指定填充颜色。

注意 当把 FillStyle 或 BackStyle 属性设置为 1 (Transparent) 时将忽略 FillColor 和 BackColor 属性。

详细信息 关于 Visual Basic 颜色常数列表,请参阅《语言参考》的“颜色常数”。关于指定 RGB 颜色的信息,请参阅《语言参考》的“RGB 函数”。同时,关于在 Visual Basic 中创建图形的详细信息,请参阅“使用文本和图形”。

在窗体上绘制形状

可用 Shape 控件在窗体上绘制(普通或圆角)矩形、(普通或圆角)正方形、椭圆形和圆形。

要在窗体上绘制形状,请按以下步骤执行

  1. 在工具箱中,选定 Shape 控件。

    当指针移动到窗体上时就变成了一个十字。

  2. 单击并拖动十字使所绘制的形状达到所需大小。
  3. 在“属性”窗口中选定 Shape 属性。
  4. 在“设置值”框中选择所需样式。

调整 Shape 控件大小的方法和调整其它控件的方法相同:选定并拖动控件,将其调整到所需尺寸,或者设置控件的 Height 和 Width 属性。

--------------------------------------------------------------------------------------------

绘制流动圆的方法(当然,效果没flash好):

Option Explicit
Private WithEvents Timer1 As Timer
Private WithEvents Timer2 As Timer
Dim Pi As Double
Dim RunTimeA, RunTimeB As Double
Dim cntX As Single, cntY As Single
Dim r As Single
Dim tX As Single, tY As Single
Dim Rad As Single
Dim clr As String

 

Private Sub Form_Load()
Pi = 0.0175  '该值为圆周率除以180的近似值,为什么这样请看数学必须四圆的内容

Set Timer1 = Controls.Add("vb.timer", "Timer1")   '创建一个timer,同下

Set Timer2 = Controls.Add("vb.timer", "Timer2")
With Form1'批量对form1进行设置
.Height = 5000
.Width = 5000
.BackColor = &H80000008  '设置窗口背景颜色
.Caption = "单击用circle画,双击用pset画"
.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2 '使窗口居中
End With
cntX = Form1.Width / 2  '圆心的坐标,同下
cntY = Form1.Height / 2 - 200
Timer1.Enabled = False '设置timer,同下
Timer1.Interval = 10
Timer2.Interval = 10
Timer2.Enabled = False
r = 2000  '设置半径
RunTimeA = 10  '设置间隔时间内运行次数,同下
RunTimeB = 10
Rad = 3.1415 / 180   '获得单位弧度,具体请看数学必修四圆的内容
clr = "&HFF0000"  '设置圆的颜色
End Sub

 

Private Sub Form_Click()
Me.Cls  '清除窗口上的图像
RunTimeB = 0
Timer2.Enabled = True
Timer1.Enabled = False
End Sub

 

Private Sub Form_DblClick()
Me.Cls
RunTimeA = 0
Timer2.Enabled = False
Timer1.Enabled = True
End Sub

 

Private Sub Timer1_Timer()
Dim i As Long
For i = 1 To Rad / 3.1415 * 180   '从角度1循环到角度N
DoEvents    '之前说过的,释放....
RunTimeA = RunTimeA + 1
If RunTimeA > 360 Then  '判断是否画了一个圆,是则重设tuntime并改变画圆的颜色方便区分
RunTimeA = 0
If clr = "&HFF0000" Then
clr = "&HC00000"
Else
clr = "&HFF0000"
End If
End If
Dim Arg As Double
Arg = -Abs(Pi * RunTimeA)         '获得角度,具体看数学必修四圆的内容
tX = cntX + r * Cos(Arg)             '获得线与单位圆的交点的x值,具体看数学必修四圆的内容,同下
tY = cntY + r * Sin(Arg)               '获得线与单位圆的交点y值
Me.DrawWidth = 5                                 '设置笔画的大小
Me.PSet (tX, tY), clr                       '画点
Next
End Sub


Private Sub Timer2_Timer()
Dim radd As Double
RunTimeB = RunTimeB + 1
radd = Abs(Rad * RunTimeB)                 '获得弧度
If radd > 3.14 * 2 Then                           '判断弧度是否超过圆周率的两倍
Me.Circle (cntX, cntY), r, clr                   '画圆
If clr = "&HFF0000" Then
clr = "&HC00000"
Else
clr = "&HFF0000"
End If
RunTimeB = 0
Else
Me.DrawWidth = 5                                 '设置笔画的大小
Me.Circle (cntX, cntY), r, clr, 0, radd    '画弧
End If
End Sub

-------------------------------------------------------------

'总的来说,用circle画弧的方法比较流畅,并且比较好看些,但不能获得坐标。若要取得坐标,建议使用下面的代码

'在窗体中添加一个frame

Dim Pi As Double
Dim runTime As Double
Dim a As Single, b As Single
Dim cntX As Single, cntY As Single
Dim r As Single
Private WithEvents Timer1 As Timer
Dim tX As Single, tY As Single
Dim tStep As Single


Private Sub Form_Load()
Pi = Atn(1)
Set Timer1 = Controls.Add("vb.timer", "Timer1") '创建一个timer
a = 250 '椭圆长轴
b = 250 '椭圆短轴
cntX = 500 '中心坐标X
cntY = 500 '中心坐标Y
r = 10 '圆半径
Timer1.Interval = 5 '运动间隔(毫秒)
tStep = Pi / 50 '角度步长
Timer1.Enabled = True
End Sub

 

Private Sub Timer1_Timer()
runTime = runTime + 5 '每步移动的大小
Dim Arg As Double
Arg = runTime * tStep
tX = cntX + a * Cos(Arg)
tY = cntY + b * Sin(Arg)
Me.Cls
Me.DrawStyle = 2
'Me.Circle (cntX, cntY), a, vbRed, , , b / a'画出运动轨迹
Frame1.Move tX, tY, Frame1.Width, Frame1.Height '物体移动
End Sub


'该代码是从网上找的,我的知识还无法全部理解,就这样了。。。。会用就行。。。。。。。

-------------------------------------------------------------------------------------------

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多