程序设计基础-Visual Basic(2019秋)

沈阳师范大学 刘立群

目录

  • 认识 Visual Basic
    • ● 认识 Visual Basic
    • ● 对象的属性、事件和方法
    • ● 控件的容器-窗体
    • ● 文本编辑工具-文本框
    • ● 命令按钮和标签
  • 程序设计基础
    • ● 语句和语法规则
    • ● 数据类型和常量变量
    • ● 运算符与表达式
    • ● 常用内部函数
    • ● 输入与输出
  • 基本控制结构和算法
    • ● 程序结构与算法
    • ● 选择结构的语句实现
    • ● 循环结构的语句实现
    • ● 穷举和递推问题求解
    • ● 嵌套循环解百钱百鸡问题
    • ● 星形矩阵的显示问题
  • 常用标准控件
    • ● 选择控件和滚动条--设置文字格式
    • ● 列表框及组合框—购票系统
    • ● 计时器与图片控件—自动变换的交通灯
    • ● 图形操作—小球运动
  • 数组和过程
    • ● 数组的定义与一维数组的应用
    • ● 二维数组
    • ● 控件数组
    • ● 自定义过程
    • ● 参数传递
    • ● 变量的作用域
  • 键盘鼠标事件与菜单设计
    • ● 鼠标键盘事件--小鸡吃虫游戏
    • ● 菜单程序设计--控制移动字幕
  • 通用对话框与文件操作
    • ● 通用对话框与文件操作
    • ● 文件操作--打开保存数据实例
图形操作—小球运动

图形操作基础

一、坐标系统

为了定位不同对象所处的位置,Visual Basic引入了坐标系统。每个容器控件都具有自己的坐标系统,并且坐标的作用范围只限定在该容器的工作区内。对于窗体而言,它的工作区是除去标题栏和边框的剩余区域。对于图片框,它的工作区是除去边框的剩余区域。

与坐标系有关的属性主要有:

ScaleWidth属性和ScaleHeight属性,设置容器工作区在坐标系中的宽度和高度。

ScaleLeft属性和ScaleTop属性,设置容器工作区左上角在坐标系中的横纵坐标值。

坐标系缺省情况下为系统坐标系,系统坐标系规定容器工作区的左上角为坐标原点,横向向右为X轴正向,纵向向下为Y轴正向。在系统坐标系中可以选择8种坐标刻度单位,但无论选择哪种单位,都不会改变工作区的实际大小,只是改变工作区在坐标系中的宽度(ScaleWidth)和高度(ScaleHeight)。窗体的系统坐标系如图1所示。

二、颜色的表示

在控件中设置前景色(ForeColor属性)、背景色(BackColor属性)、绘制图形或显示文本的时候,均需要使用Visual Basic的颜色值。在Visual Basic中表示不同颜色值的方法四种:

1. 十六进制

颜色值可以用一个六位的十六进制数表示,这个数从左到右,每两位一组代表一种元色,它们的顺序是蓝绿红,例如,&H000000表示黑色、&H0000FF表示红色、&H00FF00表示绿色。其中,&H是16进制数的前导符,表示后面是一组16进制数。

例如,语句Form1.BackColor=&H0000FF 是将窗体的背景色设置为红色。

2.RGB函数

RGB函数返回一个长整型(Long)整数,用来表示一个颜色值。RGB函数通过指定红、绿、蓝三元色的相对亮度,生成一个用于显示的特定颜色。其语法如下:

RGB(red,green,blue)

说明:

red 必选参数,0 到 255 间的整数,代表颜色中的红色成分。

green 必选参数,0 到 255 间的整数,代表颜色中的绿色成分。

blue 必选参数,0 到 255 间的整数,代表颜色中的蓝色成分。

3.QBColor函数

QBColor函数返回一个长整型(Long)数,用来表示对应颜色的RGB颜色码,其语法如下:

QBColor(color)

说明:Color是必选参数,是介于0~15之间的整数,代表16种基本颜色。

例如,QBcolor(0)返回黑色,QBcolor(9)返回蓝色,QBColor(12)返回红色。例如,语句Form1.BackColor = QBColor(12) 是将窗体的背景色设置为红色。

4.颜色常量

在程序代码中还可以使用颜色常量来表示几种常用的颜色值,如vbBlack代表黑色,vbRed代表红色等。例如,Form1.BackColor=vbGreen是将窗体的背景色设置为绿色。

三、线和形状

如果要在容器控件中显示基本图形,如直线或矩形等,可以通过线(Line)控件或形状(Shape)控件来实现。在容器控件中添加线(Line)或形状(Shape)后,设置它们的相应属性值就可以使其显示为不同的直线或形状。需要注意的是,这里的容器控件可以是窗体、框架和图片框。

1. 线控件(Line)可以用来显示直线,其常用属性如下:

(1) BorderStyle:线型样式,它有7种取值,分别对应7种线型。

(2) BorderWidth:线段宽度,默认以像素为单位。

(3) BorderColor:线段颜色。

(4) X1,X2,Y1,Y2属性用来设置或返回线段两端点的坐标。其中,(X1,Y1)表示线段的第1端点坐标,(X2,Y2)表示线段的第2端点坐标。

2. 形状控件(Shape)可以用来显示矩形、正方形、椭圆、圆、圆角矩形及圆角正方形。当把Shape控件添加到容器控件上时,缺省情况下显示矩形,通过改变Shape属性可显示其它几何形状。形状控件的常用属性如下:

(1) Shape:用来设置控件所显示的几何形状。其取值如图5所示,分别对应6种形状。

(2) BorderStyle:线型样式同Line控件。

(3)  BorderWidth:边框线宽度,默认时以像素为单位。

(4)  BorderColor:边框颜色。

(5)  FillStyle:用来设置形状内部的填充图案样式,它有8种取值,如图6所示。当FillStyle值为0时,用FillColor的颜色填充形状。

 

                          图6  FillStyle属性决定的内部图案

(6)  FillColor:用来设置填充的图案的颜色。默认时FillColor为黑色。

(7)  BackColor:用来设置形状内部的背景颜色。

(8)  BackStyle:用来设置背景样式,形状是否被指定的颜色填充。其取值见表4。

                       表4  Shape控件的BackStyle属性

 

Backstyle属性值

 
 

含义

 
 

0-Transparent

 
 

表示形状边界内的区域是透明的。

 
 

1-Opaque

 
 

表示形状边界内由BackColor属性所指定的颜色来填充(默认时BackColor的颜色值为白色)。

 

====================================================================================

                                                                   实验


设计小球运动的程序

实例1:小球在两条线之间运动

项目分析:通过判断小球的Top属性与两条线的坐标Y1属性的关系,来决定小球的运动方向

项目设计:

(1)       创建界面。新建一个标准EXE工程。在窗体中添加1个形状控件和2条线。

(2)       设置属性。

Shape1的Shape属性设置为1,使其变为圆形, fillcolor属性设置为红色,fillstyle属性设置为0,表示实心的填充,这样才能显示出来红色 

Timer1 的 Interval属性设置为 10 

(3)   编写代码:

这个程序的关键是timer事件的编写,在timer事件中移动小球,top值+s,判断top与两条线的y1的关系,如果超出范围则将s值取反,就可以改变小球的运动方向了

Dim s As Integer, h As Long

Private Sub Form_Load()

 Timer1.Enabled = True

   s = -80

End Sub

Private Sub Timer1_Timer() 

  Shape1.Move Shape1.Left, Shape1.Top + s

   IfShape1.Top <= Line1.Y1 Then 

      s = -s

   End If

  IfShape1.Top + Shape1.Height >= Line2.Y1 Then

      s = -s

   End If

End Sub

 

实例2:小球在方框内运动


项目分析:这个程序通过判断小球的left、top属性与方框边框位置的关系,来决定小球的运动方向

项目设计:

(1)创建界面。新建一个标准EXE工程。在窗体中添加2个形状,其中小球为shape1,方框为shape2

(2)设置属性。

Shape1的Shape属性设置为1,fillcolor属性设置为红色,fillstyle属性设置为0,

Timer1    Interval 10

(3)编写代码:

‘与上一个程序不同,这个小球运动时left和top值都需要改变,这样才能达到斜着走的效果。需要判断4个边界,第一条If语句判断小球是否超出方框的左侧或右侧,如果超出范围则将x值取反,即水平方向开始反向,并且改变填充颜色。

下一个IF语句判断小球垂直方向是否超出外框的上方或下方,如果超出则y值取反,即垂直方向开始取反,同时利用QBcolor函数改变小球的颜色,程序运行时就可以产生小球遇到边界就反弹并且变色的效果了。

Dim x As Integer, y As Integer, k As Integer

Private Sub Form_Load()

x = 30

y = 30

End Sub

Private Sub Timer1_Timer()

Shape1.Left = Shape1.Left + x

Shape1.Top = Shape1.Top + y

If Shape1.Left <= Shape2.Left Or Shape1.Left>= Shape2.Width + Shape2.Left - Shape1.Width Then

  x = -x

  k = (k + 1)Mod 15

 Shape1.FillColor = QBColor(k)

  End If

If Shape1.Top <= Shape2.Top Or Shape1.Top >=Shape2.Height + Shape2.Top - Shape1.Height Then

  y = -y

  k = (k + 1)Mod 15

 Shape1.FillColor = QBColor(k)

End If

End Sub

 

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