第十章  其他常用语句及控件
双击滚屏  关闭窗口

 

10.3.1 坐标系

  10.3.1 坐标系
  10.3.2 图形方法
  10.3.3 图片框 (PictureBox)
  10.3.4 图像框 (Image)
  10.3.5 Shape 形状控件
  10.3.6 Line 直线控件

10.3.1 坐标系

每个对象都定位于存放它的容器内

每个容器都有一个坐标系,它包括坐标原点, x 坐标轴和 y 坐标轴,默认的坐标原点 (0,0) 在容器对象的左上角

默认单位为 Twip( 缇 ) ,还可以使用磅、像素、厘米等单位

10.3.2 图形方法

使用 Pset( 画点 ) 、 Line( 画线 ) 、 Circle( 画圆 ) 等图形方法,可以在窗体和图片框上绘制简单的图形

1. Pset( 画点 ) 方法

格式: [ 对象名 .] Pset [Step](x,y)[, 颜色 ] 

功能:在对象的指定位置 (x,y) 上按选定的颜色画点

示例:下列语句能在坐标位置 (500 , 900) 处画一个红点:

Pset (500,900) , RGB(255,0,0) 

2. Line( 画线 ) 方法

格式: [ 对象名 .] Line [(x1,y1)]-(x2,y2)[, 颜色 ] 

功能:在两个坐标点之间画一条线段。

例如,下列语句可在窗体上画一条斜线

Line (600,600)-(2000,3000)

3. Circle( 画圆 ) 方法

格式: [ 对象名 .] Circle [Step](x,y) ,半径 [ ,颜色,起点,终点,纵横比 ]

功能:在对象上画圆、椭圆或圆弧

10.3.3 图片框 (PictureBox)

图片框 (PictureBox) 和图像框 (Image) 都是用于显示图形。图片框可以作为其他控件的容器。

示例

Private Sub Form_Load() 

Show

Picture1.Print " 在图片框内写字和画圆 " 

Picture1.Circle(1200, 1000), 600, RGB(0, 0, 255) 

Picture1.PSet(1200, 1000), RGB(255, 0, 0) 

End Sub 

                   

10.3.4 图像框 (Image)

图像框 (Image) 控件的作用与图片框 PictureBox 控件相似,但它只能用于显示图形,不能作为其他控件的容器。

10.3.5 Shape 形状控件

VB 提供了画图形的基本工具,如 Shape( 形状控件 ) 、 Line( 线控件 ) 。 Shape 控件和 Line 控件只用于表面装饰,不支持任何事件

Shape 控件画出矩形、正方形、圆形等图形。

10.3.6 Line 直线控件

Line 直线控件可用来在窗体、框架和图片框中绘制简单的线段。

例 10.4 设计一个走动的时钟

(1) 分析:本例分别以 Second 、 Minite 和 Hour 函数取得系统时间 Time 的秒、分和时数,再利用计时器控件,按一定时间间隔把时间数转换为图形指针位置和显示出来

(2) 创建应用程序的用户界面

计时器 (Timer1) ,形状控件 (Shape1) ,三条线控件 (LineS, LineM, LineH) ,四个标签 ( 表示数字 )

(3) 设置对象属性

Timer1 的 Interval 属性为 1000(1 秒 )

Shape1 的 Shape 属性为 3-Circle( 圆形 ) , FillStyle 属性为 0-Solid( 实心 )

LineS, LineM, LineH 的 BorderWidth 属性为 1 , 2 , 4

(4) 编写程序代码

Option Explicit ‘ 规定所有变量都要显式声明,见 10.9.1 节

Const pi = 3.14159

Private len_S As Single, len_M As Single, len_H As Single

Private Sub Form_Load() ‘ 先取各指针的长度

len_S = Sqr((LineS.Y2 - LineS.Y1) ^ 2 + (LineS.X2 - LineS.X1) ^ 2)

' 秒针长度

len_M = Sqr((LineM.Y2 - LineM.Y1) ^ 2 + (LineM.X2 - LineM.X1) ^ 2) ' 分针长度

len_H = Sqr((LineH.Y2 - LineH.Y1) ^ 2 + (LineH.X2 - LineH.X1) ^ 2)

' 时针长度

Call Timer1_Timer

End Sub

Private Sub Timer1_Timer() ' 定时器的定时事件过程

Dim s As Single, m As Single, h As Single

Form1.Caption = Time

s = Second(Time)

m = Minute(Time)

h = Hour(Time) + m / 60

LineS.X2 = LineS.X1 + len_S * Sin(pi * s / 30) ' 绘制秒针

LineS.Y2 = LineS.Y1 - len_S * Cos(pi * s / 30)

LineM.X2 = LineM.X1 + len_M * Sin(pi * m / 30)

' 绘制分针

LineM.Y2 = LineM.Y1 - len_M * Cos(pi * m / 30)

If h >= 12 Then h = h - 12

LineH.X2 = LineH.X1 + len_H * Sin(pi * h / 6)

' 绘制时针

LineH.Y2 = LineH.Y1 - len_H * Cos(pi * h / 6)

End Sub

 

计算指针位置的方法

s 秒 /60 秒 = K / 2 π

K = 2 π s / 60 = π s / 30

x2 = x1 + x = x1 + L * Cos( π /2 – K ) = x1 + L * SinK

LineM.X2 = LineM.X1 + Len_s * Sin(PI * s / 30)

 
双击滚屏  关闭窗口
 
版权所有数学与信息科学学院