?? 8-15.c
字號:
#include"stdio.h"
#include"dos.h"
#include"graphics.h"
typedef struct PaletteColor
{
unsigned char red;
unsigned char green;
unsigned char blue;
}PalColor,*PalColor_p;
PalColor_p GetPalColor(int index) /*獲取序號為index的調(diào)色板寄存器的顏色信息*/
{
PalColor_p color;
outp(0x3c6,0xff);
outp(0x3c7,index);
color->red=inp(0x3c9);
color->green=inp(0x3c9);
color->blue=inp(0x3c9);
return color;
}
void SetPalColor(int index, PalColor_p color) /*設(shè)置序號為index的調(diào)色板寄存器顏色*/
{
outp(0x3c6,0xff);
outp(0x3c8,index);
outp(0x3c9,color->red);
outp(0x3c9,color->green);
outp(0x3c9,color->blue);
}
main()
{
int i,j,index;
int gd=DETECT,gm;
PalColor *old_color,color; /*其中old_color用于保存原寄存器顏色信息*/
initgraph(&gd,&gm,"c:\\tc");
index=1; /*設(shè)置將要使用的調(diào)色板寄存器序號為1號*/
setcolor(15);
circle(300,200,50);
setfillstyle(1,index);
/*使用1號調(diào)色板寄存器內(nèi)存放的顏色(初始為藍(lán)色)來填充圓*/
floodfill(300,200,15);
old_color=GetPalColor(index); /*保存1號寄存器的藍(lán)顏色信息*/
color.red=color.green=color.blue=0; /*將三原色都初始化為0*/
getch();
for(i=0;i<63;i++)
{
/*使三原色的值依次加1*/
color.red+=1;
color.green+=1;
color.blue+=1;
SetPalColor(1,&color); /*設(shè)置由color指定的新的顏色到1號寄存器內(nèi)*/
for(j=0;j<10;j++) /*延時*/
delay(5000);
}
SetPalColor(1,old_color);
/*當(dāng)圓內(nèi)的顏色達(dá)到最亮?xí)r重新設(shè)回由old_color保存的藍(lán)色*/
getch();
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -