第九章      图形程序设计9.1 图形控件
图形控件包括图片框控件、图像框控件、直线控件和形状控件4种,其中图片框和图像框是用来放置图片的,在第5章中已经介绍过,本节介绍另外两种图形控件。
    9.1.1直线控件
    直线控件用来创建直线。它的使用方法与其他控件相同,在工具箱中单击直线控件图标,将鼠标移动到窗体上,在所需位置开始拖动鼠标,拖动到合适处后释放鼠标,则在鼠标的拖动起点与终点之间就出现了一段直线,如图9.1所示。
    单击直线可选中它,并且在直线的两端出现两个小方块。将鼠标指针移动到某个方块上,则指针变成一个十字形,此时拖动鼠标,可以更改该直线的长度与方向,如图9.2所示。也一可以拖动鼠标来改变直线的位置。
    直线控件的属性较其他控件要少得多,主要用来设置直线的宽度、颜以及线型等。
    只有直线的宽度为1(BorderWidth=1)时,BorderStyle属性的7个取值才都有效,否则BorderStyle属性的取值只有0和6有效。例如,直线的宽度为2时,不能将其设置为虚线。如
图9.3所示的是各种线型的比较,从上到下,各直线控件的BorderStyle属性的值依次为1~6。
    与其他控件不同的是,直线控件没有任何事件。因此,在程序运行时,它不能响应用户的任何操作。
9.1.2 形状控件使用形状控件可以方便地在窗体上绘制出矩形、正方形、圆、椭圆、圆角矩形和圆角正方形等5种基本几何图形。使用形状控件的方法与其他控件相同,这里不再赘述。
    形状控件的Shape属性是它很主要的一个属性,该属性决定了形状控件所绘制图形的类型。表9.3中列出了Shape属性的值及含义。
    形状控件也有BorderColor、BorderStyle和BorderWidth属性,且含义与直线控件相同。在
默认情况下,使用图形控件绘制出的图形的背景是透明的,这是因为在默认情况下BackStyle属性的值为0〔透明).将该属性的值设置为l.即可在BaekColor属性中指定图形的背景颜。
    形状控件的另一个重要属性是Fi1lStyle属性,该属性用来决定图形的填充样式,表9.4中列出了它的取值及含义。
    如果图形的填充样式不是透明的,即Fi1lStyle属性的值不为l.则可以通过Fi1lColor属性设置图形的填充颜。
    图形的各种填充效果,从左到右各图形的Fil1StyIe属性的值依次为0~7。
运行该程序,窗体如图9.7所示。单击【形状】设置区中的某单选按钮,则右边的图形就会变成所选的形状,单击【填充】设置区巾的某单选按钮,则图形就会以所选的样式填充。
    如图9.8所示的是选中【椭圆】与【对角交叉线】单选按钮后的效果。
9.2 坐标系统在VB中,控件放置在窗体或图片框等对象中,而窗体又放置在屏幕对象中,这些能够放置其他对象的对象称为容器,如窗体、图片框与屏幕都是容器。
    每个容器都有一个坐标系统,以便为对象的定位提供参考。容器坐标系统的默认设置是:容器的左上角为坐标的原点。横向向右为K轴的正方向,纵向向下为Y轴的正方向。如图9.9所示的是窗体对象的默认坐标系统。
    坐标的度量单位由容器对象的ScaleMode属性决定,ScaleMode属性的值与对应的度量单位如表9.6所示。
    对象的Left和Top属性决定了该对象左上角在容器内的坐标,Width和Height属性决定了对象的大小,它们的单位总是与容器的度量单位相同。如果改变了容器的度量单位,则这4个属性的值都会发生相应的变化,以适应新的坐标系统,对象的实际大小与位置并不会改变。
vb程序设计简单吗
    使用默认的坐标系统有时很不方便,用户可以根据具体的需要重新定义容器的坐标系统。
    属性ScaleWidth和ScaleHeight的值分别用来设置容器坐标系x轴与Y轴的正方向及最大坐标值。X轴的度量单位为容器当前宽度的1/ScaleWidth、Y轴的度量单位为对象当前宽度的1/ScaleHeight。如果ScaleWidth的值小于0,则x轴的正向向上;如果ScaleHeight的值小于0,则Y轴的正向向上。属性ScaleTop与ScaleLeft的值用来设置容器左上角的坐标。
例如,将窗体的坐标属性设置为如表9.7所示,则对应的窗体坐标系统如图9.10所示,坐标原点定位在窗体的中点。
    如果将窗体的坐标属性设置为如表9.8所示,则对应的窗体坐标系统如图9.11所示,坐标原点定位在窗体的左下角,同时Y轴的正方向向上,这是符合人们习惯的一种坐标系统。
    自定义坐标系统最简单的方法是使用Sacle方法,其语法如下:
    [对象].Scale[(xl,y1),(x2,y2)]
    其中对象可以是窗体或图片框,参数(x1,y1)用来定义对象左上角的坐标值,参数(x2,y2)用来定义对象右下角的坐标值。
    例如,如图9.50所示的坐标系统可以使用如下语句来定义:
    Scale(-50,-50),(50,50)
    图9.11所示的坐标系统可以使用如下语句来定义:
    Scale(0,100),(100,0)
9.3 绘图属性在对象(窗体或图片框)上绘制图形时,还需要设置对象的绘图属性以确定所绘制图形的特征,例如所画线的宽度以及图形的填充样式等。
    1.与CurrentX与CurrentY。
    属性使用Print方法在窗体或图片框中显示文本时,文本总是出现在当前坐标处。例如,在默认情况下,第一次使用Print方法输出的文本显示在窗体的左上角。通过CurrentX与CurxentY属性可以指定当前坐标,这两个属性在设计时不可用。
    例如:
 
Private Sub Form_Click()
  Scale(0,100)-(100,0)        "自定义坐标系统
  For i=10 To 80 Step 10
  Currenty = i                "指定当前坐标
  Currenty = i
  Print “清华大学”
  Next
End Sub
    运行该程序,文本在窗体上的显示效果如图9.12所示,如果在代码中不使用CurrentX与CurrentY属性指定当前坐标,则窗体上文本的显示效果如图9.13所示。
2.AutoRedraw属性。
    如果AutoRedraw属性的值为True,则所绘制的图形是持久的。即当窗体被隐藏到其他窗口之后或调整了大小,使用Print方法显示的文本或使用图形方法绘制的图形都将重新显示。
    如果AutoRedraw属性的值为False,则所绘制的图形是临时的。当窗体被隐藏到其他窗口之后或调整了大小,窗体上的文本或图形将被掩盖掉。例如,图9.14中(a)图所示的是在窗体上正常显示的图形和文本,(b)图所示的是将另外一个窗体移动到该窗体上,然后再移走后的效果,可见,被另一窗体掩盖部分的图形和文本消失了。
    AutoRedraw属性的默认值为False,在使用Print方法或图形方法时,最好将该属性的值设置为Ture。
3.其他绘图属性。
    表9.9中列出了窗体与图片框控件的其他绘图属性。
9.4 定义颜在VB中,颜是以十六进制数表示的。例如,在【属性】窗口中设置BackColor与ForeColor等颜属性时,出现的值总是一个十六进制数。以十六进制数来设置颜既不方便也不直观,一般用户很难看出颜与十六进制数的对应关系。为此,VB提供了一些颜常数和颜函数,使用它们可以方便直观地设置出想要的颜。
    1.颜常量。
    如果程序中只需要使用8种基本颜,则使用VB提供的颜常量即可达到目的。这些常量所代表的颜可以从它们的名字上看出。表9.11所示的是8种基本颜与颜常量的对应关系。
    例如,要将窗体(名称为Form1)的背景设置为红,可以使用如下语句:
    Form1.BackColor=&HFF.
    也可以使用颜常数来设置,语句如下:
    Form.BackColor= VblRed
2.QBColor函数
    使用QBColor函数可以设置16种颜,语法如下:
    QBColor(Color)
    参数Color是一个0~15的整数,每个整数代表一种颜,表9.12中列出了该参数的取值与对应的颜。
    例如,下列语句的含义也是将窗体的背景设置为红。
    Forml.BackColor=QBColor(4)
    3.RGB函数。
    使用颜常量和QBColor函数只能指定一些基本的颜,而使用RGB函数则可以指定几乎所有的颜。RGB函数是通过指定红(Red)、绿(Green)、蓝(Blue)三原的值来定义颜的,其语法为:
    RGB(红、绿、蓝)。
红、绿、蓝三原的值均为0~255之间的整数,颜值的不同组合将产生不同的颜,从理论上讲,三原混合可以产生256×256×256种颜。表9.13中列出了基本颜与对应的RGB函数。
    例如,使用RGB函数设置窗体背景为红的语句为:
    Forml.BackColor= RGB(255,0,0)
    实际上,对于颜的十六进制数,每两位一组代表一种原的颜值,最低两位为红的值,其次是绿和蓝的值。例如,十六进制数&HOOFFOOFF对应RGB(255,0,255),因此,它表示的颜为洋红。
9.5 图形方法图形方法是指窗体或图片框控件用于绘图的方法,其中包括Line方法、Circle方法、Pset方法以及PaintPicture方法等。使用这些方法可以绘制出直线、矩形、圆、椭圆、弧线、扇形、点以及各种曲线。
    Line方法用于绘制直线或矩形,其语法格式如下:
    [对象].Line[[Step](xl,y1)1-[Step](x2,y2)[,颜][,B[F].
    对象可以是窗体或图片框控件,其中各参数的含义如下:
    Step:该参数是可选的,如果使用该参数,则表示起点坐标(x1, y1)或终点坐标(x2, y2)是相对当前点( CurrentX,CurrentY)的,而不是相对坐标原点的。
    (x1,y1):用于指定直线的起点,也是可选的,如果省略则起点为当前点(CurrentX,CuxrerttY)。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。