Android绘制多个矩形作为背景色



我用画布在上面画了多个纹理。这些纹理是矩形,现在我想使用这些纹理的部分是不可见的,所以我可以在纹理后面画背景色,让相同的纹理有不同的颜色,而不是添加不同颜色的相同的图片。我试着像这样添加矩形:

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);
}

每个坐标代表一个纹理,x和y值是屏幕上的位置,例如坐标1|1可以有xS=0 | yS=0和2|1 xS=48 (48=texturesize) | yS=0。我用ShapeDrawable和Rectangles本身尝试了这个,在第一种情况下,它会画出除了一条y线以外的所有颜色,在另一种情况下,它会画出一些有bug的东西。是否有其他方法可以做到这一点,或者可能我不明白如何设置这些矩形,我不知道左,上,右,下的东西是如何工作的。剩下的代码在这里你可以看到我是如何绘制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的列表。

感谢您的阅读。

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

最新更新