android - Android画布绘制不同颜色的圆圈
问题描述
我只使用画布绘制这个圆圈和线条。
但我想让每件作品都有不同的颜色。有没有办法用 3-4-5-6 绘制 300,300 个圆圈 ..(每一块都是相等的)不同的颜色。例如第一件是红色,第二件是蓝色,第三件是橙色。
编辑:我回答了下面的问题。
解决方案
我在方形图像上做过类似的事情,通过将图像切成小块并PorterDuffXferMode
在每一块上使用过滤器很容易。这可能对您不起作用,原因是您的饼形切片不均匀而不是正方形/矩形。但我是怎么做到的?看:
创建一个 Canvas 对象,将您的图像作为位图传递:
Canvas canvas = new Canvas(bitmap1);
创建一个 Paint 对象并将 setXferMode 设置为
SRC_ATOP
:Paint paint = new Paint(); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP));
确定图像切片的大小并
RectF
用它初始化对象,这是饼形大小的问题,如果你能找到解决这个问题的方法,你可以做到。现在,在所有切片之间循环并在其上放置一个滤色器。
paint.setColor("Your color here"); //Move the rect to next piece using offset //i and j are loop variables as a 2D Matrix //dx is width of a slice and dy is the height of a slice rect.offsetTo(i * dx, j * dy); //Draw the colored Rect on the image canvas.drawRect(rect, paint);
最后,根据需要使用位图。
PS:这不是什么新鲜事,但大约 4 年前,我在投入大量时间并阅读了许多 android 文档后自己发现了它。看到这个答案似乎很容易,但找到整个过程却并非如此。