gpt4 book ai didi

Java - 更改使用 Graphics2D 创建的一些正方形的颜色

转载 作者:行者123 更新时间:2023-11-30 10:54:03 27 4
gpt4 key购买 nike

我只想创建一个 100 x 100 正方形的简单游戏,每个正方形有 5 个像素。

我创建了一个类:

public class Draw extends JComponent{
private List<Graphics2D> recList = new ArrayList<Graphics2D>();
public void paint(Graphics g) {
//THIS TO SET (0,0) PANEL START AT BOTTOM LEFT
Graphics2D g2 = (Graphics2D)g;
AffineTransform at = g2.getTransform();
at.translate(0, getHeight());
at.scale(1, -1);
g2.setTransform(at);

//THIS TO DRAW ALL THE SQUARES
for (int i = 0;i<100;i++){
for (int j=0;j<100;j++){
g2.setColor(Color.red);
g2.drawRect(5*i, 5*j, 5, 5);
recList.add(g2); //Store each square to the list to change the color
}
}
}
}

然后我就把它拖到netbeans的设计窗口,方 block 就画好了,看起来不错...

但是我好像走错了一步。第一次我想使用它们的位置从列表中获取一个特定的正方形,但是 Graphic2d 没有任何方法来获取位置(x 和 y)或更改颜色。

不知道有没有其他方法可以实现?PS:还有一点,我可以将每个方 block 的位置设置为它的中心吗?

最佳答案

您可以创建自己的 Tile 类,它存储诸如 xywidth高度颜色。每个 Tile 对象也可以负责绘制自身:

class Tile {
private int x, y, width, height;
private Color color;

public Tile(int x, int y, int width, int height, Color color) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.color = color;
}

public void paint(Graphics g) {
g.setColor(color);
g.fillRect(x, y, width, height);
}
}

预先创建磁贴:

List<Tile> tiles = ...;

void createTiles() {
for(int x = 0; x < 100; x++) {
for(int y = 0; y < 100; y++) {
Color color = ...; //choose color
int size = 5;
int tileX = x * size;
int tileY = y * size;
tiles.add(new Tile(tileX, tileY, size, size, color));
}
}
}

然后通过在 paint 方法中将图形对象传递给它们进行渲染:

void paint(Graphics g) {
tiles.forEach(tile -> tile.paint(g));
}

关于Java - 更改使用 Graphics2D 创建的一些正方形的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33795483/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com