我正在尝试使用单独的整数值绘制多个矩形。
BufferedImage rectImage = bimage.myBImage;
BufferedImage pointImage = bimage.myBImage;
Graphics g = rectImage.createGraphics();
Graphics h = pointImage.createGraphics();
Color rectangle = Color.CYAN;
g.setColor(rectangle);
int alon = -118;
int alat = 34;
int x = (int) Math.round((alon-UL_Lon)/dXLon);
int y = (int) Math.round((UL_Lat-alat)/dYLat);
g.drawRect(x - 5, y - 5, 10, 10);
Color point = Color.BLUE;
h.setColor(point);
h.drawLine(x, y, x, y);
我有alon和alat的多个值,我希望能够输入这些值,而不必一遍又一遍地重写代码。
我该怎么做这样的事情?
这个问题很模糊,措辞不太好。根据我收集到的信息,我推测您希望在不同的位置渲染多个不同大小的矩形。你应该首先定义你想要多少个矩形:
int numberOfRectangles = 5;
然后你应该创建一个数组,可以容纳你定义的矩形数量:
Rectangle rectangles[] = new Rectangle[numberOfRectangles];
现在,您必须定义矩形:
rectangles[0] = new Rectangle(7, 64, 32, 32);
rectangles[1] = new Rectangle(64, 18, 4, 32);
您似乎也想设置颜色?所以你可以通过制作一个数组来做到这一点:
Color rectangleColors[] = new Color[numberOfRectangles];
然后定义它们:
rectangleColors[0] = new Color(255, 48, 128);
rectangleColors[1] = Color.GREEN;
由于这个系统,你不必一次定义所有的矩形。现在,您必须循环遍历矩形数组,并使用以下渲染方法渲染每个定义的矩形:
for (int i = 0; i < numberOfRectangles; i++)
{
g.setColor(rectangleColors[i]);
g.fillRect(rectangles[i].getX(), rectangles[i].getY(), rectangles[i].getWidth(), rectangles[i].getHeight());
}
尽管我还没有在Java中测试过,但这个应该可以工作。
如果要给矩形的值完全随机,则必须复制粘贴代码并更改值。但是,如果这些值是一个序列(例如,您希望创建20个相邻的矩形),则可以使用for
循环。
for(int i=1; i<11; i++){
int x = (int) Math.round((alon-UL_Lon + i)/dXLon);
int y = (int) Math.round((UL_Lat-alat + i)/dYLat);
g.drawRect(x - 5, y - 5, 10, 10);
}
像这个