0

我使用画布在其上绘制多个纹理。这些纹理是矩形,现在我想使用这些纹理,其中部分是不可见的,所以我可以在纹理后面绘制背景颜色,以获得具有不同颜色的相同纹理,而无需添加具有不同颜色的相同图片。我尝试像这样添加 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 的列表。

非常感谢您的阅读。

4

1 回答 1

0

我找到了一个解决方案,这也是其他人遇到的问题(只是很难找到)有点难以理解Rectleft,top,right和bottom的值是如何工作的,例如我想要的开始和ed点一个大小为 16*16 的矩形,在屏幕上的点 x=5|y=18,所以我需要将正确的值设置为 x+size (5+16) 并将底部设置为 y+size (18+ 16)。lft 和 top 可以设置为矩形的左上边缘(起始位置)。

于 2013-05-05T12:45:14.570 回答