图形是一种能迅速且精确地传递信息的有效方式,很容易被人们理解。利用计算机来绘制各种图形、图表已成为各个领域的重要手段。例如,可以用曲线、直方图、饼状图来输出各种信息,以增加形象性,使人一目了然。对于许多应用程序而言,以图形方式描述的结果或输出可能更有意义,有时甚至“一幅图”可以顶“千句话”。
Quick BASIC提供了彩色绘图的功能,我们可以利用绘图语句及颜色选择,在屏幕上显示各种美丽的图形。本章的主要内容有:
n 屏幕坐标系
n 屏幕方式及颜色的设置
n 基本绘图语句
n 填涂颜色语句PAINT
n 图形的窗口操作
本章的难点在于对各种绘图语句在综合运用时的合理安排。
微机提供了两种屏幕显示模式,即文本显示模式和图形显示模式,简称文本方式和图形方式。
在文本显示模式下,显示的最小单位是字符。在这种显示模式下,只能用字符和线条组成图形。因而,这种模式主要用于显示文本(程序的数值计算或字符处理的结果)。此时,整个屏幕可显示25(行)×40(列)或25(行)×80(列)个字符,可同时使用16种颜色。
文本方式下屏幕显示位置用字符坐标系来描述。这种坐标系以屏幕的左上角为坐标原点,水平方向为X轴,垂直方向为Y轴,文本方式分为40列文本和80列文本。如图11-1所示。

图11-1 40列和80列字符坐标系
在字符坐标系中,确定屏幕上某字符的位置用屏幕定点语句LOCATE来实现。
格式:
LOCATE[〈行号〉][,〈列号〉][,[〈变量1〉][,[〈变量2〉][,〈变量3〉]]]
功能:把光标移动到指定位置。
说明:
(1)〈行号〉与〈列号〉为屏幕上的行号和列号,是结果为整型的算术表达式。若省略,默认为当前行号和当前列号。
(2)〈变量1〉说明光标是否可见。当值为1时,表示光标打开;取值为0时,表示光标关闭。若省略,默认为原值。
(3)〈变量2〉为屏幕上光标起始扫描行,是一结果为整型的算术表达式。省略时,默认为原值。
(4)〈变量3〉为屏幕上光标停止扫描行,是一结果为整型的算术表达式。省略时,默认为原值。
[例11-1] 阅读、分析下面的程序。
'EXAMPLE 1
CLS '清除屏幕
PRINT "Hello!" '打印字符串:Hello!
LOCATE 10,15 '把光标定在第10行第15列
PRINT "Welcome!" '打印字符串:Welcome!
LOCATE 15,20,0 '把光标定在第15行第20列
PRINT "Goodbye!" '打印字符串:Goodbye!
END
在图形显示模式下,屏幕上每一个可以控制的单元叫做像素,它是图形的基本元素,一般称为“点”。在这种显示模式下,图形是由一行行整齐排列的像素构成的光栅图形,光栅图形的一个像素对应屏幕的一个光点。Quick BASIC的绘图语句在屏幕上绘图或涂色就是点亮或关闭这些带有各种颜色的像素点。屏幕上像素的密度,决定了图像的质量,密度越高,图形就越清晰。
通常把屏幕上像素的个数叫做分辨率。例如,如果屏幕的水平方向有320个像素,垂直方向有200个像素,则该屏幕的分辨率为320×200。
在图形显示模式下,又有中分辨率和高分辨率之分:
可用于显示图形和字符,其分辨率为320×200,共有64000个像素占。即水平方向像素个数为320,坐标编号0~319,垂直方向像素个数为200,坐标编号为0~199,显示字符时的行列数为25行×40列。
可用于显示精度较高的图形和字符,其分辨率为640×350或640×200,共有224000个或128000个像素点,显示字符时的行列数为25行×80列。因此,分辨率为640×350的图像要比分辨率为320×200的图像清晰。
另外,计算机配置的图形适配器不同,屏幕分辨率也不同;适配器上的显示缓冲存储区大小不同,也有不同的显示页数和颜色数目 。
图形方式中,每个像素在屏幕上显示位置用点坐标系来描述。即用坐标(x,y)来表示,其中0≤x≤319(或639),0≤y≤199。
绘图语句中的坐标数据可以用两种形式给出,一种是绝对坐标,另一种是相对坐标。
绝对坐标的参考点是坐标系的原点(0,0),x、y只能取规定范围内的正整数。
相对坐标是相对于“最后参考点”的坐标,通常把最近一次绘图的结束点称为最后参考点。在相对坐标中,x、y是相对于最后参考点x方向和y方向上的位移量,x和y可以是正整数,也可以是负整数。Quick BASIC中的相对坐标通过绘图语句中的选择项“STEP”来标识。
字符坐标系则精确地指出了屏幕上一个像素的位置。此外,字符坐标系以行、列的形式给出字符位置,而点坐标系中像素的位置是以列、行的形式给出的。LOCATE语句对屏幕上的图形输出位置没有影响。
为了能根据需要在屏幕上画出图形,首先介绍设置屏幕方式及设置图形颜色的方法。
格式:
SCREEN[〈屏幕方式〉][,[〈颜色开关〉]][,[〈非当前页号〉]][,[〈当前页号〉]]
功能:设置屏幕显示方式。
说明:
(1)〈屏幕方式〉表示显示方式的算术表达式。方式0为文本方式,其他都为图形方式。根据计算机配制的适配器的不同,有不同的显示方式。SCREEN语句共有10种方式,编号为0~2、7~13。对VGA适配器,常见的屏幕方式为0,7,8,9,12,13。不同的显示方式,屏幕有不同的分辨率、不同颜色属性以及不同的字符大小。表11-1列举了几种常见屏幕显示方式。
表11-1 常见屏幕显示方式
|
方式编号 |
分辨率(列数×行数) |
颜色种类 |
显示器与适配器 |
|
0 |
文本方式 |
16 |
|
|
1 |
320*200 |
8 |
CGA,EGA,VGA |
|
2 |
640*200 |
2 |
CGA,EGA,VGA |
|
7 |
320*200 |
16 |
EGA,VGA |
|
8 |
640*200 |
16 |
EGA,VGA |
|
9 |
640*350 |
16 |
EGA,VGA |
|
10 |
640*350 |
2 |
EGA,VGA |
|
11 |
640*480 |
2 |
VGA |
|
12 |
640*480 |
16 |
VGA |
|
13 |
320*200 |
256 |
VGA |
(2)〈颜色开关〉一个算术表达式,其取值范围在0~255,是决定是否显示颜色的开关。表11-2列出了各方式下,颜色开关为不同值时,是显示黑白图形还是显示彩色图形。
(3)〈非当前页号〉是一个算术表达式,表示图形数据要写入的显示缓冲区页号,不同的屏幕方式有不同的面数值,省略时默认为0页。
(4)〈当前页号〉为一个算术表达式,是指能够显示的缓冲区页号,不同的屏幕方式有不同的页数值,省略时默认为当前页。当图形数据写入的缓冲区页号未指定为当前页时,该图形看不见。
(5)屏幕的省略方式为0,即文本方式。在显示图形之前,要先用SCREEN语句设置相应的屏幕方式。
表11-2 颜色的显示开关
|
方式编号 |
颜色开关为0时 |
颜色开关为非0数时 |
|
0 |
黑白 |
彩色 |
|
1 |
彩色 |
黑白 |
|
其他 |
黑白 |
黑白 |
[例11-2] 下面各SCREEN语句分别设置了不同的屏幕方式。
'EXAMPLE 2
SCREEN0,1 '设置屏幕为文本方式彩色显示
SCREEN1,1 '设置屏幕为图形方式1,单色显示
SCREEN7,,1,0 '设置屏幕为图形方式7,数据写入缓冲区非当前页1页
'并设置0页为显示的当前页
SCREEN 12 '设置屏幕为图形方式12
我们在设计屏幕图形时,不仅希望图形具有美丽的外观开头,还希望它具有让人赏心悦目的色彩。Quick BASIC中提供的COLOR语句可以设置字符显示的前景色和背景色,以及各种图形的颜色。
格式1:
COLOR[〈前景色〉][,[〈背景色〉][,[〈边框色〉]]]
格式2:
COLOR[〈背景色〉][,[〈调色板〉]]
格式3:
COLOR[〈前景色〉][,[〈背景色〉]]
格式4:
COLOR[〈前景色〉]
功能:设置屏幕显示的颜色。
说明:
(1)该语句可以设置显示器的前景颜色和背景颜色,但是受到屏幕方式的制约。在ACREEN7~10及12和13中,〈前景色〉不是颜色号而是颜色的属性号,COLOR语句不能决定颜色的范围,它是由适配器/显示器的组合以及用SCREEN语句设定的屏幕方式共同决定。
(2)格式1只能在文本方式下使用,用该语句可以设置前景、背景和边框的颜色。