これはおそらく初歩的な質問です。しかし、Java Programming for the Absolute Beginner の第 9 章を読み終え、Challenges セクションに近づいてきました。私はプログラムに暗いものから明るいものへのグラデーションを表示させることができません。
質問は尋ねます:
「片側が暗く、反対側に移動するにつれてゆっくりと明るくなるグラデーションをペイントする Canvas を作成します。」
キャンバス ページの作成に関する Java チャレンジ(以前に質問したもの) を見て、カラー グラデーション キャンバスの作成について理解を深めましたが、まだ大きな問題があります。
私の主な問題は、プログラムが完全に黒い四角形を示しているとき、または最初の for ループだけで完全に白い四角形を実行しているときに、その間にグレーの色を取得する方法だと思います。私の for ループに問題があり、変数を正しく識別していないと思います。
この質問に対する答えは、多くの新しい Java プログラマーが Graphics と Canvas を理解するのに役立つ可能性があります。
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]));
}
}
}