1000部丰满熟女富婆视频,托着奶头喂男人吃奶,厨房挺进朋友人妻,成 人 免费 黄 色 网站无毒下载

首頁 > 文章中心 > 正文

色彩編輯技術(shù)

前言:本站為你精心整理了色彩編輯技術(shù)范文,希望能為你的創(chuàng)作提供參考價(jià)值,我們的客服老師可以幫助你提供個(gè)性化的參考范文,歡迎咨詢。

色彩編輯技術(shù)

RGB色彩混合模型應(yīng)用在VGA上可呈現(xiàn)64個(gè)輝度級(jí),通過64種不同亮度的紅色、綠色和藍(lán)色疊加可產(chǎn)生出262144(64×64×64)種不同的色彩。在VGA的640×480×16模式下,因受到顯示存儲(chǔ)區(qū)的限制,VGA每次僅能從262144種顏色中選出16種顏色同時(shí)使用。雖然可以通過對(duì)VGA色彩控制寄存器DAC的操作選取所需要的色彩,在262144種顏色中進(jìn)行16種色彩交換,用理想的色調(diào)繪制較高質(zhì)量的圖形圖像,獲得如模擬光照,色彩的自然過度等特殊效果,但由于沒有現(xiàn)成的VGA色彩混合模型調(diào)色工具,因此對(duì)一般的用戶來說色彩的調(diào)配是很不方便的,用戶實(shí)際用到多數(shù)是VGA提供的16種缺省值色彩。本文給出了一個(gè)VGA色彩調(diào)配工具程序,使用本色彩調(diào)配工具提供的顏色編輯功能,可以方便的調(diào)試出所有的VGA模擬色彩。

色彩調(diào)配工具提供了下述四方面功能。

(1)顏色索引功能本功能從色彩調(diào)配工具提供的調(diào)色板的16種顏色中每次選出一種顏色供用戶調(diào)配,同時(shí)提示出當(dāng)前被調(diào)配色彩中的RGB各分量值(輝度),RGB取值范圍是0到63。使用‘i’和‘s’鍵改變顏色索引號(hào)號(hào),通過顏色索引號(hào)在調(diào)色板上選取各種需調(diào)配的顏色。

(2)顏色調(diào)配功能本功能在顏色選好后,對(duì)指定色號(hào)的顏色進(jìn)行調(diào)配。使用‘1’和‘2’鍵增加和減少該顏色的紅色分量。使用‘3’和‘4’鍵增加和減少綠色分量,使用‘5’和‘6’鍵增加和減少藍(lán)色分量。在RGB分量值變化時(shí),調(diào)配的顏色跟隨著變化,且RGB各分量值也顯示出來。調(diào)配中的顏色同時(shí)自動(dòng)寫入用戶調(diào)色板。

(3)顯示調(diào)色板功能本功能顯示色彩調(diào)配工具提供的3個(gè)調(diào)色板。第一個(gè)是缺省值調(diào)色板,顯示16種標(biāo)準(zhǔn)顏色,使用‘d’鍵彈出。第二個(gè)是灰色調(diào)色板,顯示16種灰度的灰色,使用‘g’鍵彈出。第三個(gè)是用戶調(diào)色板,它的初始值是16種標(biāo)準(zhǔn)顏色,用戶使用顏色索引功能和顏色調(diào)配功能在它上面進(jìn)行色彩編輯,編輯好的顏色的RGB值自動(dòng)保存起來。使用‘u’鍵將用戶調(diào)色板彈出。

(4)調(diào)色板打印功能本功能將用戶編輯好的用戶調(diào)色板中的16種顏色的RGB值打印在屏幕上,供用戶記錄下來后在自己的應(yīng)用程序中使用。

色彩調(diào)配工具在TurboC和BorlandC下運(yùn)行,讀者可以單獨(dú)使用它,也可以把它改成函數(shù)加在應(yīng)用程序中。程序清單附后:

#include<dos.h>

#include<graphics.h>

intadapter,mode;

intscreen-x,screen-y;

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

intred-vol,grn-vol,blu-vol,key-num,idx-num,row,col;

intrgb-flag,adj,clr-idx;

intvga-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};

intvga-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};

intvga-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};

charstring[]="0123456789101112131415";

chartitle[]="VGAcolorpattern";

unionREGSregs;

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;t1<16;t1++){

x1=sx,y1=sy,x2=wsx,y2=wsy;

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

rectangle(sx-1,sy-1,sx2-3,sy2-3);

sx=285,sy=40,wsx=80,wsy=20;

x1=sx,y1=sy,x2=wsx,y2=wsy;

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>15)clr-idx=0;

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

change-idx();break;

case''''s'''':clr-idx--;

if(clr-idx>15)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;}

gotoclr-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){

case1:

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

if(adj==1)red-vol--;

if(red-vol>63)red-vol=63;

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

break;

case2:

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

if(adj==1)grn-vol--;

if(grn-vol>63)grn-vol=63;

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

break;

case3:

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

if(adj==1)blu-vol--;

if(blu-vol>63)blu-vol=63;

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

break;}

return;}

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

switch(clr){

case6:clr=20;break;

case8:clr=20;break;

case9:clr=57;break;

case10:clr=58;break;

case11:clr=59;break;

case12:clr=60;break;

case13:clr=61;break;

case14:clr=62;break;

case15: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){

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

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

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

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

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

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

case3: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];

blu-vol=vga-default[t1][2];

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

blu-vol=vga-gray[t1][2];

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

blu-vol=vga-user[t1][2];

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(“RGBvalue:”);

set-cursor(row+1,col);

printf(“Index:”);

for(t1=0;t1<16;t1++)printf(“%2d,”,t1);

set-cursor(row+2,col);

printf(“Red:”);

for(t1=0;t1<16;t1++)printf(“%2d,”,vga-user[t1][0]);

set-cursor(row+3,col);

printf(“Green:”);

for(t1=0;t1<16;t1++)printf(“%2d,”,vga-user[t1][1]);

set-cursor(row+4,col);

printf(“Blue:”);

for(t1=0;t1<16;t1++)printf(“%2d,”,vga-user[t1][2]);

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

bar(x1,y1,x1+x2,y1+y2);

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

主站蜘蛛池模板: 天峻县| 西乌| 太保市| 龙州县| 偃师市| 门源| 汪清县| 噶尔县| 威远县| 遵化市| 三穗县| 南开区| 绍兴市| 仙桃市| 鲁甸县| 塘沽区| 三原县| 青龙| 拉萨市| 察哈| 丁青县| 海原县| 中宁县| 丰都县| 长宁县| 道孚县| 临朐县| 宁津县| 汝南县| 鲁山县| 五台县| 门头沟区| 奉贤区| 卓尼县| 普安县| 吉林市| 托克逊县| 龙州县| 长春市| 安国市| 喀什市|