教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> 论文> 其他论文> VGA色彩编辑技术

VGA色彩编辑技术

上传者:网友
|
翻新时间:2023-04-25

VGA色彩编辑技术

VGA色彩编辑技术 VGA色彩编辑技术 VGA色彩编辑技术 RGB色彩混合模型应用在VGA上可呈现64个辉度级,通过64种不同亮度的红色、绿色和蓝色叠加可产生出262144(64×64×

6

4)种不同的色彩。在VGA的640×480×16模式下,因受到显示存储区的限制,VGA每次仅能从262144种颜色中选出16种颜色同时使用。虽然可以通过对VGA色彩控制寄存器DAC的操作选取所需要的色彩,在262144种颜色中进行16种色彩交换,用理想的色调绘制较高质量的图形图像,获得如模拟光照,色彩的自然过度等特殊效果,但由于没有现成的VGA色彩混合模型调色工具,因此对一般的用户来说色彩的调配是很不方便的,用户实际用到多数是VGA提供的16种缺省值色彩。本文给出了一个VGA色彩调配工具程序,使用本色彩调配工具提供的颜色编辑功能,可以方便的调试出所有的VGA模拟色彩。

色彩调配工具提供了下述四方面功能。

(1)颜色索引功能 本功能从色彩调配工具提供的调色板的16种颜色中每次选出一种颜色供用户调配,同时提示出当前被调配色彩中的RGB各分量值(辉度),RGB取值范围是0到63。使用‘i’和‘s’键改变颜色索引号号,通过颜色索引号在调色板上选取各种需调配的颜色。

(3)显示调色板功能 本功能显示色彩调配工具提供的3个调色板。第一个是缺省值调色板,显示16种标准颜色,使用‘d’键弹出。第二个是灰色调色板,显示16种灰度的灰色,使用‘g’键弹出。第三个是用户调色板,它的初始值是16种标准颜色,用户使用颜色索引功能和颜色调配功能在它上面进行色彩编辑,编辑好的颜色的RGB值自动保存起来。使用‘u’键将用户调色板弹出。

(4)调色板打印功能 本功能将用户编辑好的用户调色板中的16种颜色的RGB值打印在屏幕上,供用户记录下来后在自己的应用程序中使用。

色彩调配工具在Turbo C和Borland C下运行,读者可以单独使用它,也可以把它改成函数加在应用程序中。程序清单附后:

#include <dos.h>

#include <graphics.h>

int adapter, mode;

int screen-x,screen-y;int red-vol, grn-vol, blu-vol, key-num, idx-num, row, col;

int rgb-flag, adj, clr-idx;

int vga-default[16][3]={

0,0,0,0,0,42,0,42,0,0,42,42,42,0,0,42,0,42,0,63,63,63,21,17,63,19,63,63,63,0,63,63,63};

int vga-gray[16][3]={24,24,24,28,28,28,33,33,33,37,37,37,41,41,41,

46,46,46,50,50,50,54,54,54,58,58,58,63,63,63};

int vga-user[16][3]={

0,0,0,0,0,42,0,42,0,0,42,42,42,0,0,42,0,42,0,63,63,63,21,17,63,19,63,63,63,0,63,63,63};char title[]="VGA color pattern";

union REGS regs;

main(){

detectgraph(&adapter,&mode);

initgraph(&adapter, &mode,“ ”);setfillstyle(SOLID-FILL,

7); bar(120,103,509,2

3

7);sx=146,sy=138,wsx=20,wsy=80;

settextstyle(3,0,

1);

outtextxy(250,105,title);

settextstyle(2,0,

5);

outtextxy(sx,sy-15,string);sy+wsy+4;for(t1=0;t1<16;t1++) {setfillstyle(SOLID-FILL,t

1);

bar(sx,sy,sx+wsx,sy+wsy);

sx=sx+wsx+1;{

setcolor(0);

sx=146;idx-num=1;clr-idx=15;

rectangle(sx,sy,sx2-4,sy2-

4);sx=285,sy=40,wsx=80,wsy=20;setfillstyle(SOLID-FILL,clr-idx);

bar(sx,sy,sx+wsx,sy+wsy);

red-vol=63;grn-vol=63;blu-vol=63;

display-status();

clr-bar-loop:

key-num=getch();

if(key-num==‘0’) return;

switch(key-num){

case `i′:clr-idx++;

if(clr-idx>

1

5) clr-idx=0;

if(clr-idx<0) clr-idx=15;

change-idx();break;

case 's':clr-idx--;

if(clr-idx>

1

5) clr-idx=0;

if(clr-idx<0) clr-idx=15;

change-idx();break;

case '1':rgb-flag=1;adj=0;

change-rgb();break;

case '2':rgb-flag=1;adj=1;

change-rgb();break;

case '3':rgb-flag=2;adj=0;

change-rgb();break;

case '4':rgb-flag=2;adj=1;

change-rgb();break;

case '5':rgb-flag=3,adj=0;

change-rgb();break;

case '6':rgb-flag=3;adj=1;

change-rgb();break;

case 'd':reset-defaults();

idx-num=1;reset-pattern();break;

case 'g':reset-grays();

idx-num=2;reset-pattern();break;

case 'u':reset-user();

idx-num=3;reset-pattern();break;

case 'p':print-user();break;}

goto clr-bar-loop;}

display-status(){

setcolor

(7);

row=1;col=15;

set=cursor(row,col);

printf(“Index: %2d”, clr-idx);

set-cursor(row+1,col);

printf(“Red : %d”, red-vol);

set-cursor(row+2,col);

printf(“Green:%d”,grn-vol);

set-cursor(row+3,col);

printf(“Blue :%d”,blu-vol);

return;}

adjust-color(){

switch(rgb-flag){

case 1:

if(adj==0) red-vol++;

if(adj==

1) red-vol--;

if(red-vol>

6

3) red-vol=63;

if(red-vol<0) red-vol=0;

break;

case 2:

if(adj==0) grn-vol++;

if(adj==

1) grn-vol--;

if(grn-vol>

6

3) grn-vol=63;

if(grn-vol<0) grn-vol=0);

break;

case 3:

if(adj==0) blu-vol++;

if(adj==

1) blu-vol--;

if(blu-vol>

6

3) blu-vol=63;

if(blu-vol<0) blu-vol=0;

break;}

return;}

write-rgb(clr,red-vol,grn-vol,blu-vol){

switch(clr){

case 6: clr=20;break;

case 8: clr=20;break;

case 9: clr=57;break;

case 10: clr=58;break;

case 11: clr=59;break;

case 12: clr=60;break;

case 13: clr=61;break;case 15: clr=63;break;

default:break;}

regs.h.ah=0x10;

regs.h.al=0x10;

regs.x.bx=clr;

regs.h.ch=grn-vol;

regs.h.cl=blu-vol;

regs.h.dh=red-vol;

int86(0x10,&regs,&regs);

return;}

set-index(){

switch(idx-num){

case 1:red-vol=vga-default[clr-idx][0];

grn-vol=vga-default[clr-idx][1];

blu-vol=vga-default[clr-idx][2];break;

case 2:red-vol=vga-gray[clr-idx][0];

grn-vol=vga-gray[clr-idx][1];

blu-vol=vga-gray[clr-idx][2];break;

case 3:red-vol=vga-user[clr-idx][0];

grn-vol=vga-user[clr-idx][1];

blu-vol=vga-user[clr-idx][2];break;}

return;}

reset-defaults(){

for(t1=0; t1<16; t1++){

clr-idx=t1;

red-vol=vga-default[t1][0];

grn-vol=vga-default[t1][1];write-rgb(clr-idx,red-vol,grn-vol,blu-vol);}

t1=15; clr-idx=t1;

display-status();return;}

reset-grays(){

for(t1=0;t1<16;t1++){

clr-idx=t1;

red-vol=vga-gray[t1][0];

grn-vol=vga-gray[t1][1];write-rgb(clr-idx,red-vol,grn-vol,blu-vol);}

t1=15;clr-idx=t1;

display-status();return;}

reset-user(){

for(t1=0;t1<16;t1++){

clr-idx=t1;

red-vol=vga-user[t1][0];

grn-vol=vga-user[t1][1];write-rgb(clr-idx,red-vol,grn-vol,blu-vol);}

t1=15;clr-idx=t1;

display-status();return;}

store-user(){

vga-user[clr-idx][0]=red-vol;

vga-user[clr-idx][1]=grn-vol;

vga-user[clr-idx][2]=blu-vol;

return;}

print-user(){

row=16;col=15;

set-cursor(row,col);

printf(“RGB value:”);

set-cursor(row+1,col);

printf(“Index:”);set-cursor(row+2,col);

printf(“Red: ”);set-cursor(row+3,col);

printf(“Green:”);set-cursor(row+4,col);

printf(“Blue:”);return;}

change-idx(){

set-index();display-status();

setfillstyle(SOLID-FILL,clr-idx);

bar(sx,sy,sx+wsx,sy+wsy);

return;}

change-rgb(){

adjust-color();display-status();

write-rgb(clr-idx,red-vol,grn-vol,blu-vol);

store-user();

return;}

reset-pattern(){

display-status();

setfillstyle(SOLID-FILL,clr-idx);return:}

set-cursor(x,y){

regs.h.ah=0x02,regs.h.bh=0;

regs.h.dh=x,regs.h.dl=y;

int86(0x10,&regs,&regs);

return;}

下载文档

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

网友最新关注

缤纷泡泡
银杏树
铅笔和橡皮
摸瞎子
“痛并快乐”的滑冰运动
未来的多功能书包
写事等
期末考试了
无题
谈谈“月落乌啼霜满天,江枫渔火对愁眠”
我最敬佩的一个人
吹泡泡
我的快乐与烦恼
乐于助人
2011年1月学生会主席入党思想汇报
入党积极分子党校学习思想汇报范文
12月入党思想汇报范文
2011年1月积极分子党课学习思想汇报
入党积极分子12月党校培训学习汇报
关于低碳生活的入党思想汇报
1月大学生入党思想汇报范文
企业职工入党思想汇报范文
2011年1月大一学入党生思想汇报
关于入党动机的思想汇报
12月预备党员思想汇报书
事业单位人员入党思想汇报
大一学生党员1月思想汇报范文
2011年大四学生党员的思想汇报
公务员12月入党思想汇报
浅谈有线电视网络系统防雷接地
110KV变电所毕业设计
10 kV配电变压器保护配置方式的合理选择
深层搅拌石灰桩加固软土地基
电气工程就业前景
电气工程师就业前景
让养路费征稽更显人性化
美国GE公司SR系列保护装置在国产300MW机组保护上的应用
电气工程质量监理实施细则
非粘结混凝土路面加铺层
我国筑养路机械市场现状及今后的发展思索
水泥混凝土路面断板的处理
电力电子技术在电力系统中的应用探讨
设计一个PLC控制系统需要以下7个步骤
电力工程与管理专业就业前景及介绍
《灰雀》教学设计之二
《丑小鸭》第一课时教学设计
《爬天都峰》教学设计之二
《金色的草地》第一课时
《金色的草地》教学设计之三
《掌声》第二课时教学设计
《我们的民族小学》片断赏析
《爬天都峰》教学设计之四
《小摄影师》教学设计之二
《我们的民族小学》教学设计之二
《爬天都峰》教学设计之三
《金色的草地》教学设计之二
《小摄影师》第二课时
《丑小鸭》的教学随想
《灰雀》教学设计之三