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 可选的。如果包括,则利用对角坐标画出矩形。
例如:form1.Line (100, 100)-(500, 500), vbRed, BF
当然,也可以使用line控件画直线。这里不详细介绍
--------------------------------------------------------------------------------------------
Circle 方法:在对象上画圆、椭圆或弧
语法:object.Circle [Step] (x, y), radius, [color, start, end,aspect]
参数:radius 指半径。
说明:
①想要填充圆,使用圆或椭圆所属对象的 FillColor 和 FillStyle属性。只有封闭的图形才能填充。封闭图形包括圆、椭圆、或扇形。
②画部分圆或椭圆时,如果 start 为负,Circle 画一半径到 start,并将角度处理为正的;如果 end 为负,Circle画一半径到 end,并将角度处理为正的。Circle方法总是逆时针(正)方向绘图。当它们的值为负值时,VB会自动画一条连接弧的半径,若想去掉,则必须保证两个值都为正,即加上负号
③画圆、椭圆或弧时线段的粗细取决于 DrawWidth 属性值。在背景上画圆的方法取决于 DrawMode 和 DrawStyle属性值。
④画角度为 0 的扇形时,要画出一条半径(向右画一水平线段),这时给 start 规定一很小的负值,不要给 0。
⑤"."可以省略语法中间的某个参数,但不能省略分隔参数的逗号。您指定的最后一个参数后面的逗号是可以省略的。
例子:请看下面画圆的代码。
--------------------------------------------------------------------------------------------
其他:
用以定义 Form、PictureBox 或Printer 的坐标系统。不支持。
语法
object.Scale(x1, y1)- (x2,y2)
Scale 方法的语法包含下列部分:
部分 | 描述 |
object | 可选的。一个,其值为“应用于”列表中的一个对象。如果省略object,则带有的Form 对象缺省为 object。 |
x1, y1 | 可选的。均为单精度值,指示定义 object左上角的水平(x-轴)和垂直(y-轴)坐标。这些值必须用括号括起。如果省略,则第二组坐标也必须省略。 |
x2, y2 | 可选的。均为单精度值,指示定义 object右下角的水平和垂直坐标。这些值必须用括号括起。如果省略,则第一组坐标也必须省略。 |
说明
Scale 方法使您能够将坐标系统重置到所选择的任意刻度。Scale 对的图形语句以及控件位置的坐标系统都有影响。
如果使用不带参数的 Scale(两组坐标都省略),坐标系统将重置为
返回或设置下一次打印或绘图方法的 水平 (CurrentX) 或垂直(CurrentY) 坐标。不可用。
语法
object.CurrentX [=x]
object.CurrentY [=y]
说明
坐标从对象的左上角开始测量。在对象的左边 CurrentX 属性值为0,上边的 CurrentY 为 0。坐标以为单位表示,或以ScaleHeight、ScaleWidth、ScaleLeft、ScaleTop 和 ScaleMode属性定义的度量单位来表示。
用下面的时,CurrentX 和CurrentY 的设置值按下述说明改变:
方法 | 设置 CurrentX, CurrentY 为: |
Circle | 对象的中心。 |
Cls | 0,0。 |
EndDoc | 0,0。 |
Line | 线终点。 |
NewPage | 0,0。 |
下一个打印位置。 | |
Pset | 画出的点。 |
VtFillStyle 常数提供指定用于绘制背景的填充类型的选项。
常数 | 描述 |
VtFillStyleNull | 无填充(背景透出)。 |
VtFillStyleBrush | 纯色或图案填充。 |
返回或设置用于填充形状的颜色:FillColor 也可以用来填充由 Circle 和Line 生成的圆和方框。
语法
object.FillColor [ =value]
FillColor 属性语法包含下面部分:
部分 | 描述 |
Object | ,其值是“应用于”列表中的一个对象。 |
Value | 值或常数,确定填充颜色,“设置值”中有详细描述。 |
设置值
value 的设置值如下:
设置值 | 描述 |
标准 RGB 颜色 | 在程序中提供 RGB 或 QBColor 函数的颜色集 |
系统缺省颜色 | “对象浏览器” 中的 Visual Basic (VB) 对象库的系统颜色常数指定的颜色。Microsoft Windows 运行环境替换用户在设置中的选择。 |
缺省情况下,FillColor 设置为 0(黑色)。
说明
除 Form 对象之外,如果 FillStyle属性设置为缺省值,1(透明),则忽略 FillColor 设置值。
返回或设置一个值,以决定的输出外观或者Shape 及 Line 控件的外观。
语法
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 | 白色。 |
说明
当用 Shape 或 Line 控件,或者用图形方法画图时,使用这个属性产生可视效果。VisualBasic 将绘图模式的每一个像素与现存背景色中相应的像素做比较,然后进行操作。例如,设置值 7(异或笔)用 Xor操作符将绘图模式像素和背景像素组合起来。
DrawMode 设置值的真正效果,取决于所画线的颜色与屏幕已存在颜色的合成。对于设置值 1,6,7,11,13 和 16可以最可靠地预知该属性的输出结果。
返回或设置一个值,以决定输出的线型的样式。
语法
object.DrawStyle [=number]
DrawStyle 属性语法包含下面部分:
部分 | 描述 |
Object | ,其值是“应用于”列表中的一个对象。 |
Number | 整数,指定线型,“设置值”中有详细描述。 |
设置值
number 的设置值为:
常数 | 设置值 | 描述 |
VbSolid | 0 | (缺省值)实线 |
VbDash | 1 | 虚线 |
VbDot | 2 | 点线 |
VbDashDot | 3 | 点划线 |
VbDashDotDot | 4 | 双点划线 |
VbInvisible | 5 | 无线 |
VbInsideSolid | 6 | 内收实线 |
说明
返回或设置输出的线宽。
语法
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 |
可用 FillStyle 和 BorderStyle 属性对绘制在窗体上的任意形状设置填充样式和边框样式。
FillStyle 属性和 Style属性一样都提供了若干预定义的填充样式图案。其中包括:实线、透明、水平线、垂直线、向上对角线、向下对角线、十字线和对角十字线。
BorderStyle 属性提供若干预定义的边框样式。其中包括:透明、实线、虚线、点线、点划线、双点划线和内实线。
详细信息 FillStyle 和 BorderStyle属性都提供了代表上面所列样式的常数。关于详细信息,请参阅《语言参考》的“FillStyle 属性”和“BorderStyle属性”。
可用 BackColor 和 FillColor 属性为形状和形状的边框添加颜色。
设计时,可从 Shape 控件的“属性”窗口中选定填充或边框颜色属性,然后从提供的调色板或系统颜色中选择要设置的颜色。
为在运行时设置颜色,可使用 Visual Basic 颜色常数(例如,vbGreen)或系统颜色常数(例如vbWindowBackground),还可使用 RGB 函数指定填充颜色。
注意 当把 FillStyle 或 BackStyle 属性设置为 1 (Transparent) 时将忽略FillColor 和 BackColor 属性。
详细信息 关于 Visual Basic 颜色常数列表,请参阅《语言参考》的“颜色常数”。关于指定 RGB颜色的信息,请参阅《语言参考》的“RGB 函数”。同时,关于在 Visual Basic中创建图形的详细信息,请参阅“使用文本和图形”。
可用 Shape 控件在窗体上绘制(普通或圆角)矩形、(普通或圆角)正方形、椭圆形和圆形。
要在窗体上绘制形状,请按以下步骤执行
当指针移动到窗体上时就变成了一个十字。
调整 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
Set Timer1 = Controls.Add("vb.timer","Timer1")
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
DoEvents
RunTimeA = RunTimeA + 1
If RunTimeA > 360 Then
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)
tY = cntY + r *Sin(Arg)
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 * 2Then
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
'该代码是从网上找的,我的知识还无法全部理解,就这样了。。。。会用就行。。。。。。。
-------------------------------------------------------------------------------------------
联系客服