请记住,我对Java很新,但我应该知道足够的帮助,我应该能够理解这个问题给我的信息。
我想将RGB值存储到变量中,并且能够非手动地增加它。在伪代码中,我想要做的是:在屏幕的0,0处放置一个32p乘32p的正方形,其中rgb值为(0,0,0)。接下来我想用rgb值(10,0,0)将另一个32p乘32p的正方形放在它旁边,依旧给出暗红色到浅红色的渐变。
我想出了如何手动执行此操作,但我想知道是否有一种方法可以在循环中自动执行此操作,因此我不必经常重复此代码,只需每次添加一个方块时间。我想出了这个让你看看,所以你可以希望更好地理解我的意思(点击下面的图片链接看看我的意思)。
非常感谢给予我的任何信息:D
答案 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);
}
请注意,我已将诸如方块大小之类的内容转换为变量 - 这使得以后进行更改变得更加容易,因为您无需确保所使用的所有值都是一致的