我使用画布在其上绘制多个纹理。这些纹理是矩形,现在我想使用这些纹理,其中部分是不可见的,所以我可以在纹理后面绘制背景颜色,以获得具有不同颜色的相同纹理,而无需添加具有不同颜色的相同图片。我尝试像这样添加 Rects:
for(Coordinate c : ch.getVisibleCoords()) {
ShapeDrawable sD = new ShapeDrawable();
Rect r = new Rect(c.getxS(),
c.getyS(),
(sh.getScreenWidth()-c.getxS()-sh.getTSize()),
(sh.getScreenHeight()-c.getyS()-sh.getTSize()));
sD.setBounds(r);
textureColorRects.add(sD);
}
每个坐标代表一个纹理 xS 和 yS 值是屏幕上的位置,例如坐标 1|1 可以有 xS=0 | yS=0 和 2|1 xS=48(48=纹理大小)| yS=0。我用 ShapeDrawable 和 Rectangles 本身尝试了这个,在第一种情况下,它会绘制所有与一条 y 线相同的颜色,而在另一种情况下,它只会绘制一些错误的狗屎。有没有其他方法可以做到这一点,或者我可能不明白如何设置这些矩形,我无法弄清楚左、上、右、下的东西是如何工作的。剩下的代码在这里,你可以看到我是如何绘制 ShapeDrawables 的:
int i = 0;
for(Coordinate c : ch.getVisibleCoords()) {
ShapeDrawable sD = textureColorRects.get(i);
Paint color = new Paint();
color.setColor(c.getLandscape().getType().getColor());
color.setStyle(Paint.Style.FILL);
sD.getPaint().set(color);
sD.draw(canvas);
}
这textureColorRects
是一个包含所有 ShapeDrawables 的列表。
非常感谢您的阅读。