首页 > 解决方案 > Android画布绘制不同颜色的圆圈

问题描述

我只使用画布绘制这个圆圈和线条。

在此处输入图像描述

但我想让每件作品都有不同的颜色。有没有办法用 3-4-5-6 绘制 300,300 个圆圈 ..(每一块都是相等的)不同的颜色。例如第一件是红色,第二件是蓝色,第三件是橙色。

编辑:我回答了下面的问题。

标签: androidgeometryandroid-canvas

解决方案


我在方形图像上做过类似的事情,通过将图像切成小块并PorterDuffXferMode在每一块上使用过滤器很容易。这可能对您不起作用,原因是您的饼形切片不均匀而不是正方形/矩形。但我是怎么做到的?看:

  1. 创建一个 Canvas 对象,将您的图像作为位图传递:

    Canvas canvas = new Canvas(bitmap1);
    
  2. 创建一个 Paint 对象并将 setXferMode 设置为SRC_ATOP

    Paint paint = new Paint();
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP));
    
  3. 确定图像切片的大小并RectF用它初始化对象,这是饼形大小的问题,如果你能找到解决这个问题的方法,你可以做到。

  4. 现在,在所有切片之间循环并在其上放置一个滤色器。

    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);
    
  5. 最后,根据需要使用位图。

PS:这不是什么新鲜事,但大约 4 年前,我在投入大量时间并阅读了许多 android 文档后自己发现了它。看到这个答案似乎很容易,但找到整个过程却并非如此。


推荐阅读