Android绘制多个Rect作为背景颜色

时间:2013-05-03 18:29:19

标签: java android android-canvas background-color drawrectangle

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

非常感谢您阅读。

1 个答案:

答案 0 :(得分:0)

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