[英]How to draw rectangles using a loop?
我需要创建一个循环,以交替颜色(例如,黑色,白色,黑色,白色)在垂直线上绘制矩形。 谁能告诉我这是怎么做的?
我尝试了很多方法,但似乎无法使循环正常工作,谢谢。
for (int x = 0; x>10;x++) {
int y= 180;
graph2D.drawRect(170, y, 20, 50);
y = y + 45;
}
这就是我所拥有的,由于某种原因它不会绘制矩形,我无法将其替换为其他颜色。
您在这里遇到了一些问题。
您的for loop
将不执行任何迭代,因为您的条件是x > 10
而不是x < 10
。
将第一行从:
for (int x = 0; x>10;x++){
至:
for (int x = 0; x < 10; x++) {
另外,每次迭代都将y
重置为180,因此一旦循环开始,所有矩形都将相互绘制。 在循环外部声明y
,或使用x
计算矩形位置。
像这样:
int y = 180;
for (int x = 0; x < 10; x++) {
graph2D.drawRect(170, y, 20, 50);
y = y + 45;
}
或像这样:
for (int x = 0; x < 10; x++) {
graph2D.drawRect(170, (x * 45) + 180, 20, 50);
}
上面的数学(x * 45) + 180
是一种非常简单的说法,第一个矩形将位于(x * 45) + 180 = 0 + 180 = 180
,第二个矩形将位于(x * 45) + 180 = 45 + 180 = 225
,依此类推。
要更改矩形的颜色,您需要制作一个Colors
的列表或数组,并在每次迭代中使用与列表不同的Color
。
//Make the list
Color[] colors = {Color.black, Color.blue, Color.cyan, Color.darkGray,
Color.green, Color.lightGray, Color.magenta, Color.magenta,
Color.orange, Color.pink, Color.red, Color.white, Color.yellow};
//Draw each rectangle
for (int x = 0; x < 10; x++) {
//Change the color
g.setColor(colors[x]);
//Draw the rectangle
graph2D.drawRect(170, (x * 45) + 180, 20, 50);
}
当然,如果您希望颜色是随机的,则可以使用Random
类进行研究,并生成一个介于0和colors
数组长度之间的随机数。 还要注意,我将x
用作colors
数组的索引,并且如果您的循环将x递增为高于数组中的颜色数,则将获得ArrayIndexOutOfBoundsException。
我还假定您将Graphics
的实例命名为g
,因为大多数情况下都是通过这种方式完成的。
为什么要循环使用y
变量而不是x
?
@Override
public void paint(Graphics graph2D) {
for (int y=0; y<10; y++) {
int height = 50;
if (y%2==0) {
graph2D.setColor(Color.white);
} else {
graph2D.setColor(Color.black);
}
graph2D.fillRect(170, 180 + y*height, 20, 50);
}
}
在绘制矩形时也要注意区别:
.drawRect(..)
绘制矩形的边框。 .fillRect(..)
绘制矩形本身。 如果你想切换black
和white
的颜色,改变与每一个循环的颜色。 循环的每个偶数y%2 == 0
将具有一种颜色,否则将具有第二种颜色(也在上面的代码中提到):
if (y%2==0) {
graph2D.setColor(Color.white);
} else {
graph2D.setColor(Color.black);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.