我目前正在做一个项目,人们可以在同一屏幕的两个部分画画。现在的主要问题是,当我画了一些东西,然后决定改变为不同的颜色时,所有东西都会改变为我选择的相同颜色。
这是当前代码:
@Override
protected void onDraw(Canvas canvas) {
for (int i = 0; i < pathList1.size(); i++) {
int colorIndex = i % colorList1.size(); // select a color from the colorList based on i index
paint_brush.setColor(colorList1.get(colorIndex));
canvas.drawPath(pathList1.get(i), paint_brush);
}
invalidate();
}
有人能帮我吗?我敢肯定这是一些简单的东西,我错过了,但不知道是什么。
我在ChatGPT上试过这个:
private int lastColorIndex = -1; // initialize with an invalid index
@Override
protected void onDraw(Canvas canvas) {
for (int i = 0; i < pathList1.size(); i++) {
int colorIndex = (lastColorIndex + 1) % colorList1.size(); // select a color from the colorList that is different from the last color
paint_brush.setColor(colorList1.get(colorIndex));
canvas.drawPath(pathList1.get(i), paint_brush);
lastColorIndex = colorIndex; // update the last color index
}
}
但不知怎么的反而更糟了?颜色一点都没变。
1条答案
按热度按时间czfnxgou1#
不要在ChatGPT的代码上浪费时间,它还不够先进,所以它只会在有细微bug的代码上浪费你的时间。
您不仅需要存储路径,还需要存储这些路径的颜色。
因此创建一个 Package 器类:
将
pathList1
(我假设还有pathList2
)从List<Path>
更改为List<DrawnPath>
,当用户绘制新路径时,使用当前颜色索引将其放入此 Package 器类的示例中。当你画它的时候,用每个路径包裹的颜色,并且为了简单使用一个for-each循环。