C语言图形界面的编程

  • 格式:pdf
  • 大小:109.91 KB
  • 文档页数:1

C语⾔图形界⾯的编程

1.编写图形程序时⽤致电的⼀些图形库函数抣在graphics.lib中,扏⾏这些函数时,所需 的有关信息(如宏定义等 )则

包含在graphics.h头⽂件中。

2.我们⽇常在电视屏幕上显⽰的画⾯,其实均由⼀些圆点组成(其亮度,顔⾊不同),这些点称为像素(或像点),

它们是组成图形的最⼩单位。

3。插在PC机插槽中的图形卡(即适配器),其作⽤就是将要显⽰的字符和图形以数字形式存储在上的显⽰存储器(VRAM) 中,再将其变

成视频模拟信号送往相应适配的显⽰器机配有的显⽰器种类不同,因⽽适配器种类不同 4,VGA:视频图形阵列适器:

VGA是⽬前流⾏的PC机显⽰标准 ,它⽀持CGA,EGA的所有显⽰⽅式,但⾃已还有640*480像素的16⾊显⽰⽅式 , 640*350像素的中分

辨率显⽰⽅式和640*200像素的低分辨显⽰⽅式,它们均有16种显⽰顏⾊可供选择。 5.CVGA:是国内研制的带有显⽰ 汉字功能的VGA图形适配器,带有汉字字库,该适配器提供了和CGA,EGA,VGA

全兼容 的⼯作⽅式,还担供了在⽂本⼯作⽅式下的⾼分辨率图形显⽰功能。

6.显⽰器有两种⼯作⽅式,即⽂本显⽰和图形显⽰。它们的区别是显⽰ 存储器中的存储的信息不同。字符⽅式时, VRAM

存放要显⽰字符的ASCII 码,⽤它作为,取出字符发⽣器ROM中存放的相应字符的图像(⼜称字模),变成视频信号在显⽰ 器上进⾏显

⽰;⽽当选择图形⽅式时,则要显⽰的图形的图像直接存在VRAM中中,VRAM中某单元存放的数就表⽰了相应屏莫上某⾏和某列上的像素

及顔⾊ 7.对EGA显⽰ 器,调⾊板即16个调⾊板寄存器是⼀个顔⾊索引表,它存有16种顔⾊,VRAM中的每个像素值(是4位)实际

代表⼀个顔⾊索引号该值即上述函有选举权的参数index可知道选中哪个调⾊板寄存器,⽽每个调⾊板寄存器为6

位,故可⽤6位⼆进制数表⽰⼀个顔⾊,因⽽可有64种顔⾊供选择。该顔⾊值即是上述参数octual_color,

8.对于VGA显⽰ 器,也只有⼀个调⾊板,对应16个调⾊板寄存器。但这些寄存器装的内容和EGA的不同,它们装的⼜是⼀个

顔⾊寄存器表的索引,⽽这些颜⾊寄存器才存有显⽰的颜⾊,它们字长为18位,因⽽可选256K种颜⾊,共有256个

颜⾊寄存器,因⽽可⼀次显⽰256种颜⾊。VGA的调⾊板寄存器是6位,⽽要寻址256个颜⾊寄存器需有8位。它是这样寻址的,即还要通

过⼀个所谓模式控制寄存器的最⾼位决定,若为0(对于640*480*16⾊显⽰是这样,),则低6位由调⾊板寄存器给出,⾼两位由颜⾊选择

寄存器给出,从⽽组合出8位地址码。因此它的像素显⽰过程是:由VRAM提供调⾊板寄存器给出,再由栓索到的调⾊板寄存器的内容同颜

⾊选择寄存器配合,栓索到颜⾊寄存器,再由颜⾊寄存器存的颜⾊值⽽令显⽰器显⽰,当模式寄存器最暠位为1时,则调⾊板寄 存器给出低4位的4位码,⽽由颜⾊选择寄存器给出⾼4位的4位码,来组合成8位地址码,对颜⾊寄存器寻址得出颜⾊值。

9.存储在显⽰适配器上的显⽰存储器(VRAM)中的⼀满屏图像信息称为⼀页,每个页⼀般为64KB,VRAM可以存储要显⽰的图像好⼏页

(VRAM ) 容量⽽定,最⼤可达8 页。TURBOC只⽀持4页。编辑页和显⽰页都 可设定 。

10.setbdcolor设置背景⾊时,对整个屏幕作⽤,它不能只改变图视⼝内 的背景,在⽤setcolor设置 前景⾊时,它对图视⼝内起作⽤。若下

⼀次设置 的图视⼝设置 颜⾊,那么上次在另⼀图视⼝设置的颜⾊在本次设置的图视⼝内起作⽤。

11.动画技术:

(1)动态开辟图视⼝(2)显⽰页与编辑页交替变化。(3)画⾯存储再重放(⽤getimage,putimage)(4)直接对图像动态存储器

进⾏操作的⽅法:即得⽤显⽰适配器上控制图像显⽰的各种寄 ⽂化部碞和显⽰存储器(VRAM),对其进⾏直接作和控制,从⽽可以⾼

效快速的实现动画效果。

12.固定式菜单:程序运⾏⼀开始就出现在屏幕上的⼀种菜单,它公存在⼀次,或始终停留在画⾯上,或功能选择完成后就消失了。

弹出式菜单:仅⽤在⼀级深度的选择中,即在该菜单中选中某菜单后,⽆需再时⾏第⼆次选择。⽆⼦菜单项。

下拉式菜单:选择后还要再进⾏选择。⼏个下拉式菜单可以同时出现在屏幕上。

13.菜单窗⼝的设计:

1.菜单窗⼝图像的存储和重放

2.菜单窗⼝和菜单项的⽣成

3.光条的⽣成

4.键识别

5.菜单的连接

6.功能执⾏。

14.设置VGA12H模式(640*480):

_AH=00H; _AL=0x12; geninteupt(0x10);

恢复VGA的字符显⽰模式03H:

_AH=00H; _AL=0X03H; geninteupt(0x10);