当前位置: 首页 > 知识库问答 >
问题:

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

有耀
2023-03-14

我用画布在上面画了多个纹理。这些纹理是长方形,现在我想使用这些纹理与他们的部分不可缺少的,所以我可以绘制背景颜色背后的纹理有相同的纹理与不同的颜色,而不是添加相同的图片与不同的颜色。我尝试像这样添加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值是屏幕上的位置,例如,坐标11可以具有xS=0yS=0和21xS=48(48=texturesize)yS=0。我用ShapeDrawable和Rectangles本身尝试过,在第一种情况下,它将绘制所有相同颜色的东西,除了一条Y线,在另一种情况下,它将只绘制一些buggy shit。有没有其他的方法来做到这一点,或者我不明白如何设置这些矩形,我不知道左,上,右,下的东西是如何工作的。下面是剩下的代码,这样您就可以看到我是如何绘制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个答案

徐正雅
2023-03-14

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

 类似资料:
  • 使用closePath()闭合图形 首先我们用上节课的方法绘制一个矩形。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UT

  • 本节课通过绘制一个矩形边框效果,对WebGL整个渲染流程有一个简单认知。 学习建议 学习本节课,建议先结合注释看看案例源码,对于不熟悉的WebGL API可以在MDN搜索文档,不过刚开始学习,没必要去掌握每一个WebGL API,把主要精力放在理解WebGL的整个渲染流程上面,如果你能建立渲染管线的概念,自然对WebGL系统会有一个基本的认知。 源码体验测试 //类型数组构造函数Float32Ar

  • 绘制矩形        点击菜单栏中的“绘制矩形”按钮可以绘制矩形,绘制矩形在数据下载的时候经常要用到,绘制矩形操作及信息与绘制面相同。 修改矩形        添加后可以使用“选中对象”后双击更改面的样式,也可右键“属性”修改线的属性信息。点击属性信息框下方的整体移动(单点修改)键对面进行位置的更改。在“空间信息”栏修改矩形的节点坐标后,需要注意的是修改完可能就不是标准矩形了,要调整。 删除矩形

  • 绘制矩形        点击菜单栏中的“绘制矩形”按钮可以绘制矩形,绘制矩形在数据下载的时候经常要用到,绘制矩形操作及信息与绘制面相同。 修改矩形        添加后可以使用“选中对象”后双击更改面的样式,也可右键“属性”修改线的属性信息。点击属性信息框下方的整体移动(单点修改)键对面进行位置的更改。在“空间信息”栏修改矩形的节点坐标后,需要注意的是修改完可能就不是标准矩形了,要调整。 删除矩形

  • 上一节,我们使用lineTo()方法绘制一个封闭的矩形。其实,canvas的API提供了rect()方法可以绘制矩形。rect()方法是路径方法,它会把指定的矩形添加到当前路径的子路径中。它只添加路径,绘制图形还是由stroke()或fill()方法完成。 除了rect()方法之外,Canvas 的API还提供了三个直接处理矩形的方法: fillRect(x, y, width, height)

  • 本节,我们将学习如何绘制矩形,它也是HTML5的画布API唯一所提供的内置图形。矩形看上去可能不会让你感到兴奋,但是许多应用程序还是以某种方式在使用它,所以你也应该了解它。 图2-1 绘制矩形 绘制步骤 按照以下步骤,在画布的中央绘制一个简单的矩形: 1. 定义2D画布上下文: window.onload  = function(){ var canvas  = document.getEl