友情提示:同学您好,此页面仅供预览,在此页面学习不会被统计哦! 请进入学习空间后选择课程学习。

实验目的

1. 掌握 PSet 方法的使用。

2. 掌握 Line方法的使用。

3. 掌握Circle方法的使用。

4. 了解VB中的颜色设置方法。

5. 了解简单的动画设计方法。

实验内容

一、绘制正弦曲线

使用用户自定义坐标系统,在窗体上绘制正弦曲线。其主要思想为:使用Sin(X)分别获得X轴上的数据对应的Y值,并在(XY)处绘制对应的点,当这些点足够密集时,就形成了一条正弦曲线。本程序运行结果如图12-1所示。


rivateSub Form_Click()

Dimi As Integer

Constpi=3.14

 

Form1.Scale(-20, 1.1)-(400, -1.1)

Form1.DrawWidth= 2

'X轴和Y

Line(0, 0)-(360, 0)

Line(0, 1)-(0, -1)

 

Form1.DrawWidth= 3

'X轴写入单位数值

Fori = 0 To 360 Step 60

   PSet (i, 0)

   Print i

Next

'Y轴写入单位数值

Fori = 1 To -1 Step -1

   PSet (0, i)

   Print i

Next

'画正弦曲线

Form1.ForeColor= RGB(255, 255, 0)

Fori = 0 To 360

   PSet (i, Sin(i * pi / 180))

Nexti

EndSub

运行该程序,并回答以下问题。

1)运行该程序,如果将上述代码中设置自定义坐标的语句Form1.Scale (-20, 1.1)-(400, -1.1)改为:Form1.Scale (0, 1)-(360, -1),运行结果是怎样的?                           

2)参照上述代码,试绘制当-1800X1800时,Sin(X)的图形。

3)参照上述代码,试绘制余弦函数图形。

二、移动的按钮

向窗体中添加命令按钮Command1,当程序运行时,只要鼠标移到命令按钮上,该按钮就会随机移动到新位置,用户很难用鼠标单击它。以下为程序代码,请补充完善。

PrivateSub Command1_Click()

Print"你赢了!!!"

EndSub

PrivateSub Command1_MouseMove()

 X = Abs(Rnd(1) * Form1.Width - Command1.Width)

 Y = Abs(Rnd(1) * Form1.Height -Command1.Height)

                                       

EndSub

三、不断变换的圆

本程序运行时,可以自动产生多个不同大小、颜色各异、宽度不一的圆。程序运行结果如图12-2所示。在窗体加载时,使用用户自定义坐标,重新设置窗体的坐标系统,并向窗体中添加定时器控件Timer1,设置其Interval属性值为100

本例中利用随即函数Rnd产生的随机数,经过换算,作为圆的半径,并设置画圆使用的颜色,以及线的宽度。


Private Sub Form_Load()

Form1.Scale (0, 0)-(100, 100)

End Sub

Private Sub Timer1_Timer()

Static i As Integer

i = Int(Rnd * 16)

Form1.DrawWidth = i + 1

Form1.FillColor = QBColor(i)

Circle (50, 50), Rnd * 50, QBColor(i)

End Sub

四、显示红、黄、蓝的比例

本程序主要用于根据用户输入的红色、黄色和蓝色的不同值(这些值都是大于0的),当单击“显示图形”按钮后,在Picture控件中根据数值绘制由红、黄、蓝组成的圆形,程序运行结果如图12-3所示。


本程序的设计步骤如下。

1. 按照图12-3所示,设置窗体的Caption属性,并向窗体中添加标签,设置其Caption属性。

2. 添加三个文本框Text1Text2Text3,分别设置其BackColor属性为红色、黄色和蓝色,设置Text1Text3ForeColor属性为“白色”。

3. 添加PictureBox控件Picture1

4. 添加命令按钮Command1,并设置其Caption属性。

5. 在有下划线的位置添加代码,并调试通过。

PrivateSub Form_Load()

Picture1.Scale(-10, -10)-(10, 10)

EndSub

 

PrivateSub Command1_Click()

Dimrx As Integer, yx As Integer, bx As Integer, sum As Integer

Constpi = 3.14

 

rx= Val(Text1.Text)

yx= Val(Text2.Text)

bx= Val(Text3.Text)

sum= rx + bx + yx

Ifrx <= 0 Or yx <= 0 Or bx <= 0 Then

   MsgBox "输入的数据应大于零!"

   Exit Sub

EndIf

Picture1.Cls

Picture1.FillStyle= 0

Picture1.FillColor= vbRed

Picture1.Circle(0, 0), 8, , -2 * pi, -rx / sum * 2 * pi

 

Picture1.FillColor= vbYellow

Picture1.Circle(0, 0), 8, , -rx / sum * 2 * pi,                        

 

                                      

Picture1.Circle(0, 0), 8, , -(rx + yx) / sum * 2 * pi,              

EndSub

五、飞翔的海鸥

本例使用了Move方法,以实现简单的动画效果。程序运行时,有一只海鸥在窗体中飞翔。运行效果如图12-4所示。


在进行程序设计之前,可使用Windows提供的“画图”程序,制作三张图片,分别显示了海鸥飞翔过程中的变化情况,绘制的图形如图12-5所示。


本程序的设计步骤如下。

1. 向窗体中分别添加三个Image控件:Image1Image2Image3,并将上述三个图形文件分别加载到三个Image控件中,并将它们叠放在窗体同一位置。

2. 向窗体中添加定时器控件Timer1,并设置Interval属性的值为100

3. 补充完善如下代码,并调试通过。

Private Sub Form_Load()

Image1.Visible= True

Image2.Visible= False

Image3.Visible= False

End Sub

Private Sub Timer1_Timer()

Staticx As Integer

StaticY As Integer

Image1.Movex, Y

Image2.Movex, Y

Image3.Movex, Y

IfImage1.Visible Then

                     

                     

ElseIfImage2.Visible Then

                     

                      

ElseIfImage3.Visible Then

                     

                     

EndIf

x= (x + 100) Mod Width

Y= (Y - 100 + Height) Mod Height

End Sub

运行该程序,并回答以下问题。

在上述代码中,将最后两条语句

x= (x + 100) Mod Width

Y= (Y - 100 + Height) Mod Height

修改为:

x= x + 100

Y= Y - 100 + Height

 程序的运行结果发生了什么变化?为什么?

 

                                                                            

六、滚动的小球

以下代码用于绘制沿正弦曲线滚动的小球,请补充完善下列代码,并调试通过。

Private Sub Form_Paint()

    Dim x As Integer

    Dim y As Integer

    DrawWidth = 10

    FillStyle = 0

    For x = 50 To 8000

        DrawMode = 7

        y = 1200 * Sin(                         ) + 1300

        Circle (x, y), 50, vbCyan

                                               

    Next x

End Sub