用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心编程技巧计算机理论

○VGA色彩编辑技术

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 12:04:50
【本文由PB创新网为您整理】
RGB色彩混合模型应用在VGA上可呈现64个辉度级,通过64种不同亮度的红色、绿色和蓝色叠加可产生出262144(64×64×64)种不同的色彩。在VGA的640×480×16模式下,因受到显示存储区的限制,VGA每次仅能从262144种颜色中选出16种颜色同时使用。虽然可以通过对VGA色彩控制寄存器DAC的操作选取所需要的色彩,在262144种颜色中进行16种色彩交换,用理想的色调绘制较高质量的图形图像,获得如模拟光照,色彩的自然过度等特殊效果,但由于没有现成的VGA色彩混合模型调色工具,因此对一般的用户来说色彩的调配是很不方便的,用户实际用到多数是VGA提供的16种缺省值色彩。本文给出了一个VGA色彩调配工具程序,使用本色彩调配工具提供的颜色编辑功能,可以方便的调试出所有的VGA模拟色彩。

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

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

(2)颜色调配功能 本功能在颜色选好后,对指定色号的颜色进行调配。使用‘1’和‘2’键增加和减少该颜色的红色分量。使用‘3’和‘4’键增加和减少绿色分量,使用‘5’和‘6’键增加和减少蓝色分量。在RGB分量值变化时,调配的颜色跟随着变化,且RGB各分量值也显示出来。调配中的颜色同时自动写入用户调色板。

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

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

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

#include

#include

int adapter, mode;

int screen-x,screen-y;

int sx, sy, wsx, wsy, sx1, sy1, sx2, sy2, x1, y1, x2, y2, t1;

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,

42,21,0,42,42,42,21,21,21,21,21,63,0,63,0,

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

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

0,0,0,10,10,10,13,13,13,15,15,15,17,17,17,20,20,20,

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,

42,21,0,42,42,42,21,21,21,21,21,63,0,63,0,

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

char string[]=0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15;

char title[]=VGA color pattern;

union REGS regs;

main(){

detectgraph(&adapter,&mode);

initgraph(&adapter, &mode,“ ”);

setfillstyle(SOLID-FILL,0); bar(118,100,507,239);

setfillstyle(SOLID-FILL,7); bar(120,103,509,237);

setcolor(0), rectangle(122,105,507,235);

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);

sx1=sx-4,sy1=sy-4,sx2=sx+(16*(wsx+1))+4;sy2=

sy+wsy+4;

rectangle(sx1,sy1,sx2,sy2);

for(t1=0;t115) clr-idx=0;

if(clr-idx15) clr-idx=0;

if(clr-idx63) red-vol=63;

if(red-vol63) grn-vol=63;

if(grn-vol63) blu-vol=63;

if(blu-vol
   
     
     


转自: 仅仅学术交流与学习之用,非商业之目的.

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:27,875.00000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号