VGA色彩编辑技术_第1页
VGA色彩编辑技术_第2页
VGA色彩编辑技术_第3页
VGA色彩编辑技术_第4页
VGA色彩编辑技术_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VGA色彩编辑技术VGA色彩编辑技术 VGA色彩编辑技术 VGA色彩编辑技术 RGB色彩混合模型应用在VGA上可呈现64个辉度级,通过64种不同亮度的红色、绿色和蓝色叠加可产生出262144(646464)种不同的色彩。在VGA的64048016形式下,因受到显示存储区的限制,VGA每次仅能从262144种颜色中选出16种颜色同时使用。虽然可以通过对VGA色彩控制存放器DAC的操作选取所需要的色彩,在262144种颜色中进展16种色彩交换,用理想的色彩绘制较高质量的图形图像,获得如模拟光照,色彩的自然过度等特殊效果,但由于没有现成的VGA色彩混合模型调色工具,因此对一般的用户来说色彩的调配是很

2、不方便的,用户实际用到多数是VGA提供的16种缺省值色彩。本文给出了一个VGA色彩调配工具程序,使用本色彩调配工具提供的颜色编辑功能,可以方便的调试出所有的VGA模拟色彩。色彩调配工具提供了下述四方面功能。(1)颜色索引功能 本功能从色彩调配工具提供的调色板的16种颜色中每次选出一种颜色供用户调配,同时提示出当前被调配色彩中的RGB各分量值(辉度),RGB取值范围是0到63。使用i和s键改变颜色索引号号,通过颜色索引号在调色板上选取各种需调配的颜色。(3)显示调色板功能 本功能显示色彩调配工具提供的3个调色板。第一个是缺省值调色板,显示16种标准颜色,使用d键弹出。第二个是灰色彩色板,显示16

3、种灰度的灰色,使用g键弹出。第三个是用户调色板,它的初始值是16种标准颜色,用户使用颜色索引功能和颜色彩配功能在它上面进展色彩编辑,编辑好的颜色的RGB值自动保存起来。使用u键将用户调色板弹出。(4)调色板打印功能 本功能将用户编辑好的用户调色板中的16种颜色的RGB值打印在屏幕上,供用户记录下来后在自己的应用程序中使用。色彩调配工具在Turbo C和Borland C下运行,读者可以单独使用它,也可以把它改成函数加在应用程序中。程序清单附后:#include dos.h#include graphics.hint adapter, mode;int screen-x,screen-y;int

4、 red-vol, grn-vol, blu-vol, key-num, idx-num, row, col;int rgb-flag, adj, clr-idx;int vga-default163=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-gray163=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

5、-user163=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,237);sx=146,sy=138,wsx=20,wsy=80;settextstyle(3,0,1);out

6、textxy(250,105,title);settextstyle(2,0,5);outtextxy(sx,sy-15,string);sy+wsy+4;for(t1=0;t116;t1+) setfillstyle(SOLID-FILL,t1);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

7、,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-idx15) clr-idx=0;if(clr-idx0) clr-idx=15;change-idx();break;case s:clr-idx-;if(clr-idx15) clr-idx=0;if(clr-idx0) clr-idx=15;change-idx();break;cas

8、e 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-patte

9、rn();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);s

10、et-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-vol63) red-vol=63;if(red-vol0) red-vol=0;break;case 2:if(adj=0) grn-vol+;if(adj=1) grn-vol-;if(grn-vol63) grn-vol=63

11、;if(grn-vol0) grn-vol=0);break;case 3:if(adj=0) blu-vol+;if(adj=1) blu-vol-;if(blu-vol63) blu-vol=63;if(blu-vol0) 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

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-defaultclr-idx0;grn-vol=vga-defaultclr-idx1;blu-vol=vga

13、-defaultclr-idx2;break;case 2:red-vol=vga-grayclr-idx0;grn-vol=vga-grayclr-idx1;blu-vol=vga-grayclr-idx2;break;case 3:red-vol=vga-userclr-idx0;grn-vol=vga-userclr-idx1;blu-vol=vga-userclr-idx2;break;return;reset-defaults()for(t1=0; t116; t1+)clr-idx=t1;red-vol=vga-defaultt10;grn-vol=vga-defaultt11;w

14、rite-rgb(clr-idx,red-vol,grn-vol,blu-vol);t1=15; clr-idx=t1;display-status();return;reset-grays()for(t1=0;t116;t1+)clr-idx=t1;red-vol=vga-grayt10;grn-vol=vga-grayt11;write-rgb(clr-idx,red-vol,grn-vol,blu-vol);t1=15;clr-idx=t1;display-status();return;reset-user()for(t1=0;t116;t1+)clr-idx=t1;red-vol=v

15、ga-usert10;grn-vol=vga-usert11;write-rgb(clr-idx,red-vol,grn-vol,blu-vol);t1=15;clr-idx=t1;display-status();return;store-user()vga-userclr-idx0=red-vol;vga-userclr-idx1=grn-vol;vga-userclr-idx2=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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论