这大概是个初级问题。但是,我已经阅读了面向绝对初学者的 Java 编程的第 9 章,并进入了挑战部分。我不能完全让程序显示从暗到亮的渐变。
问题问:
“创建一个画布,在一侧绘制一个深色的渐变,然后在向另一侧移动时逐渐变亮。”
我看过Java Challenge on Creating a Canvas page(我之前问过这个问题),并且对创建颜色渐变画布有了更好的理解,但是我仍然遇到了很大的困难。
我认为我的主要问题是如何在程序显示一个完全黑色的正方形或仅使用第一个 for 循环运行时,一个完全白色的正方形之间获得灰色。我认为我的 for 循环有问题,并且没有正确识别变量。
这个问题的答案可能有助于许多新的 Java 程序员理解图形和画布。
我不知道 JFrame、Swing、Points、JPanels、BufferedImage 或 GradientPaint。
非常感谢您在此问题上的时间和合作。
这是代码:
import java.awt.*;
public class RandomColorSquare extends GUIFrame {
Canvas slight;
public final static int MIN = 0,
MAX = 225;
public RandomColorSquare(int r, int g, int b) {
super("Random Color Square");
r = r >= MIN && r <= MAX ? r : MIN;
g = g >= MIN && g <= MAX ? g : MIN;
b = r >= MIN && b <= MAX ? b : MIN;
slight = new Canvas();
slight.setBackground(new Color(r,g, b));
slight.setSize(200, 150);
add(slight, BorderLayout.CENTER);
for(r=0; r<225; r++) {
Color c = slight.getBackground().brighter();
slight.setBackground(c);
}
for (g=0; g<225; g++) {
Color d = slight.getBackground().darker();
slight.setBackground(d);
}
for (b=0; b<225; b++) {
Color e = slight.getBackground().darker();
slight.setBackground(e);
}
pack();
setVisible(true);
}
public static void main(String args[]) {
if (args.length != 3) {
new RandomColorSquare(0, 0, 0);
}
else {
new RandomColorSquare(Integer.parseInt(args[0]), Integer.parseInt(args[1]),
Integer.parseInt(args[2]));
}
}
}