2012-03-14 147 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(),和有乐趣的编码。