2012-03-14 145 views
2

我想使用C++(DarkGDK庫)製作顏色漸變(從藍到白,從左到右)。我正在嘗試使用嵌套for循環來完成此操作。 這是我到目前爲止有:DarkGDK顏色漸變代碼

#include "DarkGDK.h" 

void DarkGDK() 
{ 
    int colorDepth = dbScreenDepth(); 
    dbSetDisplayMode(256,256,colorDepth); 
    dbClear(0,0,255); 
    for (int y = 0; y < 255; y++) 
    { 
     for (int x = 0; x < 255; x++) 
     { 

     } 
    } 
    dbWaitKey(); 
} 

我不知道該怎麼做,使迭代由每次紅色和綠色值上升1。我一直盯着這個3小時,並沒有取得進展...

任何幫助,將不勝感激。

+0

開始簡單;首先製作一個像素厚的漸變,然後當你完成時,只需在y軸上重複該步驟。如果你不瞭解梯度是如何工作的,你也可以開始簡單思考:如何從灰色漸變到(幾乎)黑色?等等,然後擴大R,G和B. – Rookie 2012-03-14 22:17:19

回答

2

你需要的方法是dbInk(),裏面有dbRGB(),你錯過了while循環,這在使用這個庫時很重要。

#include "DarkGDK.h" 

void DarkGDK (void)//Main 
{ 
    int screenHeight = 256; 
    int screenWidth = 256; 
    int screenDepth = 32; 

    dbSetDisplayMode(screenWidth,screenHeight,screenDepth); 

    while(LoopGDK())//Main Loop 
    { 
     dbClear(0,0,255); 
     for (int x = 0; x < screenWidth; x++) 
     { 
      dbInk(dbRGB(x,x,255),dbRGB(x,x,255)); 
      dbBox(0+x,0,1+x,screenHeight); 
     } 
     dbWaitKey(); 
    } 
    return; 
} 

這是什麼呢,就是它水平掃描屏幕,繪製從屏幕的頂部到底部的直線從左至右,使用variabe X,在for循環。

由於白色是255,255,255或0xFFFFFF,並且您希望它從藍色變爲白色,所以必須將紅色和綠色添加1以便一直變爲白色。

如果你把它從藍到黑,作爲另一個例子,你將與

dbInk(dbRGB(0,0,255-x),dbRGB(0,0,255-x)); 

嘗試更換dbInk(),和有樂趣的編碼。