Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中使用带旋转的画布创建包含4个线段的圆_Android_Android Canvas_Android Graphics - Fatal编程技术网

在android中使用带旋转的画布创建包含4个线段的圆

在android中使用带旋转的画布创建包含4个线段的圆,android,android-canvas,android-graphics,Android,Android Canvas,Android Graphics,我需要创建一个带有四种随机颜色的分段圆,如下所示: 。“4圆中的线段” 关于使用canvas.drawArc()的android文档,我编写了以下代码,但它没有按照我的预期工作,因为它只显示了一个片段 Bitmap bitMap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); bitMap = bitMap.copy(bitMap.getConfig(), true); // Constr

我需要创建一个带有四种随机颜色的分段圆,如下所示:

。“4圆中的线段”

关于使用canvas.drawArc()的android文档,我编写了以下代码,但它没有按照我的预期工作,因为它只显示了一个片段

           Bitmap bitMap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);

    bitMap = bitMap.copy(bitMap.getConfig(), true);
    // Construct a canvas with the specified bitmap to draw into
    Canvas canvas = new Canvas(bitMap);
    // Create a new paint with default settings.
    Paint paint = new Paint();
    // smooths out the edges of what is being drawn
    paint.setAntiAlias(true);
    // set color
    paint.setColor(Color.BLUE);

    paint.setStrokeWidth(4.5f);


    RectF oval = new RectF(200F, 200F, 450F, 450F);

    paint.setStyle(Paint.Style.FILL);
    canvas.drawArc(oval, 0F, 90F, true, paint);
    paint.setColor(Color.GREEN);
    canvas.drawArc(oval, 90F, 90F, true, paint);
    paint.setColor(Color.RED);

    canvas.drawArc(oval, 180F, 90F, true, paint);
    paint.setColor(Color.BLACK);

    canvas.drawArc(oval, 270F, 90F, true, paint);

    imageView.setImageBitmap(bitMap);

你的弧角不对。请参见drawArc,角度参数如下所示:

  • startAngle-圆弧开始处的起始角度(以度为单位)

  • 扫掠角度-顺时针测量的扫掠角度(单位:度)

你的最后一个弧覆盖了之前的所有弧。您应该执行以下操作(下面是Kotlin代码):

将绘制如下内容:

Java版本:

  private RectF oval = new RectF(0F,0F,100F,100F);

  private Paint paint = new Paint();

  @Override
  protected void onDraw(Canvas canvas) {
    paint.setStyle(Paint.Style.FILL);

    paint.setColor(Color.BLACK);
    canvas.drawArc(oval, 0F, 90F, true, paint);
    paint.setColor(Color.BLUE);
    canvas.drawArc(oval, 90F, 1800F, true, paint)
    paint.setColor(Color.RED);
    canvas.drawArc(oval, 0F, 190F, true, paint)
    paint.setColor(Color.GREEN);
    canvas.drawArc(oval, 270F, 360F, true, paint)
  }

你的弧角不对。请参见drawArc,角度参数如下所示:

  • startAngle-圆弧开始处的起始角度(以度为单位)

  • 扫掠角度-顺时针测量的扫掠角度(单位:度)

你的最后一个弧覆盖了之前的所有弧。您应该执行以下操作(下面是Kotlin代码):

将绘制如下内容:

Java版本:

  private RectF oval = new RectF(0F,0F,100F,100F);

  private Paint paint = new Paint();

  @Override
  protected void onDraw(Canvas canvas) {
    paint.setStyle(Paint.Style.FILL);

    paint.setColor(Color.BLACK);
    canvas.drawArc(oval, 0F, 90F, true, paint);
    paint.setColor(Color.BLUE);
    canvas.drawArc(oval, 90F, 1800F, true, paint)
    paint.setColor(Color.RED);
    canvas.drawArc(oval, 0F, 190F, true, paint)
    paint.setColor(Color.GREEN);
    canvas.drawArc(oval, 270F, 360F, true, paint)
  }

我已经用你的代码编辑了我的问题,它仍然没有显示任何结果。你还需要正确指定你的RectF,正确的角是(0,0)和(100100)。尝试
新建RectF(0,0,100,100)
@shubhamtunl在我的示例中,画布从200200坐标开始绘制矩形。您应该将它们调整为:
private RectF oval=new RectF(20F,20F,40F,40F)。另外,请不要删除注释,如果您留下这些注释,其他用户将能够跟踪所发生的事情。@ThomasLeyk感谢您的帮助:)您也可以帮助旋转此图形吗?我已相应地编辑了我的问题。我已用您的代码编辑了我的问题,但仍然没有显示结果。您还需要正确指定您的RectF,在您的案例中,正确的拐角是(0,0)和(100100)。尝试
新建RectF(0,0,100,100)
@shubhamtunl在我的示例中,画布从200200坐标开始绘制矩形。您应该将它们调整为:
private RectF oval=new RectF(20F,20F,40F,40F)。另外,请不要删除这些注释,如果您留下这些注释,其他用户将能够跟踪所发生的事情。@ThomasLeyk感谢您的帮助:)您能帮助旋转此图形吗?我已相应地编辑了我的问题。