亚洲AV日韩AⅤ综合手机在线观看,激情婷婷久久综合色,欧美色五月婷婷久久,久久国产精品99久久人人澡

  • <abbr id="uk6uq"><abbr id="uk6uq"></abbr></abbr>
  • <tbody id="uk6uq"></tbody>
  • VGA色彩編輯技術(shù)

    時(shí)間:2024-10-12 06:57:19 計(jì)算機(jī)畢業(yè)論文 我要投稿
    • 相關(guān)推薦

    VGA色彩編輯技術(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)配工具在Turbo C和Borland C下運(yùn)行,讀者可以單獨(dú)使用它,也可以把它改成函數(shù)加在應(yīng)用程序中。程序清單附后:
    #include <dos.h>
    #include <graphics.h>
    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;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;}
    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>63) 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>63) 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>63) 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 14: clr=62;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,®s,®s);
    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];
    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(“RGB value:”);
    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,®s,®s);
    return;} 

     

    作者:陳永平 

    【VGA色彩編輯技術(shù)】相關(guān)文章:

    VGA顯示與TV顯示的區(qū)別及轉(zhuǎn)換09-06

    高性能VGA芯片AD8367原理及應(yīng)用09-07

    淺談組建非線性編輯網(wǎng)絡(luò)相關(guān)技術(shù)10-27

    談組建非線性編輯網(wǎng)絡(luò)相關(guān)技術(shù)08-07

    設(shè)計(jì)色彩-黑與白06-25

    色彩產(chǎn)生的心理效應(yīng)及色彩在藝術(shù)設(shè)計(jì)中的運(yùn)用10-21

    淺談中國傳統(tǒng)色彩文化對(duì)動(dòng)畫色彩語言的影響08-24

    關(guān)于非線性編輯系統(tǒng)在現(xiàn)代教育技術(shù)中的應(yīng)用研究08-13

    城市中的色彩初探06-23

    情感的力量與色彩的表現(xiàn)06-24