将RGB存储在唯一变量中

时间:2014-03-16 18:41:37

标签: java variables gradient rgb

请记住,我对Java很新,但我应该知道足够的帮助,我应该能够理解这个问题给我的信息。

我想将RGB值存储到变量中,并且能够非手动地增加它。在伪代码中,我想要做的是:在屏幕的0,0处放置一个32p乘32p的正方形,其中rgb值为(0,0,0)。接下来我想用rgb值(10,0,0)将另一个32p乘32p的正方形放在它旁边,依旧给出暗红色到浅红色的渐变。

我想出了如何手动执行此操作,但我想知道是否有一种方法可以在循环中自动执行此操作,因此我不必经常重复此代码,只需每次添加一个方块时间。我想出了这个让你看看,所以你可以希望更好地理解我的意思(点击下面的图片链接看看我的意思)。

非常感谢给予我的任何信息:D

http://imgur.com/9gQgZuV

3 个答案:

答案 0 :(得分:1)

我认为你的意思是这样的:

for(int red = 0, yoffset = 0; red <= 255; red += 10, yoffset++)  {
   g.setColor(new Color(red, 0, 0));
   g.fillRect(0, y * yoffset, 32, 32);
}

答案 1 :(得分:1)

您可以使用for循环递增0到7之间的值。

for (int i = 0; i < 8; i++) {
    g.setColor(new Color(10*i,0,0));
    g.fillRect(0,y*i,32,32);
}

每次循环结束时,这将使i递增1,并从中导出颜色和位置。它只绘制红色条 - 您为蓝色和绿色条添加两个循环。

答案 2 :(得分:0)

如果你在'y'的值上使用一个循环,你可以使用更少的代码来执行此操作。每个点的颜色应该等于你想要的颜色乘以我们屏幕下方的分数 - 首先是黑色,最后是全彩色。例如,对于红色渐变:

int squareSize = 32;
int numSquares = 10;
int maxColour = 255;

for (int y = 0; y < (squareSize * numSquares); y+=squareSize) {
    // The red value is found using the fraction of the way down the gradient we've travelled
    // The bottom of the gradient is at squareSize * numSquares
    int colourValue = (maxColour * (y / (squareSize * numSquares)))
    g.setColor(new Color(colourValue, 0, 0));
    g.fillRect(0, y, squareSize, squareSize);
}

请注意,我已将诸如方块大小之类的内容转换为变量 - 这使得以后进行更改变得更加容易,因为您无需确保所使用的所有值都是一致的