我使用画布在其上绘制多个纹理。这些纹理是矩形,现在我想使用这些纹理,其中部分不可见,所以我可以在纹理后面绘制背景颜色,使不同颜色的纹理相同,而不添加不同颜色的相同图片。 我试着像这样添加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 = texturesize)| 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的列表。
非常感谢您阅读。
答案 0 :(得分:0)
我找到了一个解决方案,这是其他人也遇到的问题(很难找到)有点难以理解Rect
如何工作左,上,右和下的值被视为开头和ed点例如我想要一个大小为16 * 16的矩形,并且在屏幕上的点x = 5 | y = 18,所以我需要将正确的值设置为x + size(5 + 16)和从底部到y +尺寸(18 + 16)。 lft和top可以设置在rect的左上边缘(起始位置)。