How to draw circle with partitioned in android?
我想在我的应用程序中绘制这种类型的圆。我可以使用Canvas画圆,但是我对如何进行分区一无所知?
有人可以建议我如何分割圆吗?
编辑:-我要画内圆的线。
预先感谢。
这是您需要的工作代码。...
编辑代码:-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | Paint paint1 = new Paint(); Paint paint2 = new Paint(); Paint paint3 = new Paint(); Paint paint4 = new Paint(); Paint paint5 = new Paint(); final RectF rect = new RectF(); int mRadius = 130; //Example values rect.set(getWidth()/2- mRadius, getHeight()/2 - mRadius, getWidth()/2 + mRadius, getHeight()/2 + mRadius); paint1.setColor(Color.GREEN); paint1.setStrokeWidth(mRadius/2); paint1.setAntiAlias(true); paint1.setStrokeCap(Paint.Cap.BUTT); paint1.setStyle(Paint.Style.STROKE); paint2.setColor(Color.RED); paint2.setStrokeWidth(mRadius/2); paint2.setAntiAlias(true); paint2.setStrokeCap(Paint.Cap.BUTT); paint2.setStyle(Paint.Style.STROKE); paint3.setColor(Color.BLUE); paint3.setStrokeWidth(5); paint3.setAntiAlias(true); paint3.setStrokeCap(Paint.Cap.BUTT); paint3.setStyle(Paint.Style.STROKE); canvas.drawArc(rect, 0, 60, false, paint1); canvas.drawArc(rect, 60, 60, false, paint2); canvas.drawArc(rect, 120, 60, false, paint1); canvas.drawArc(rect, 180, 60, false, paint2); canvas.drawArc(rect, 240, 60, false, paint1); canvas.drawArc(rect, 300, 60, false, paint2); canvas.drawLine(getWidth()/2, getHeight()/2, getWidth()/2-mRadius/2, getHeight()/2-mRadius/2,paint3); canvas.drawLine(getWidth()/2, getHeight()/2, getWidth()/2+mRadius/2, getHeight()/2-mRadius/2,paint3); canvas.drawLine(getWidth()/2, getHeight()/2, getWidth()/2-mRadius/2, getHeight()/2+mRadius/2,paint3); canvas.drawLine(getWidth()/2, getHeight()/2, getWidth()/2+mRadius/2, getHeight()/2+mRadius/2,paint3); canvas.drawLine(getWidth()/2, getHeight()/2, getWidth()/2-mRadius/4-mRadius/2, getHeight()/2,paint3); canvas.drawLine(getWidth()/2, getHeight()/2, getWidth()/2+mRadius/4+mRadius/2, getHeight()/2,paint3); paint4.setColor(Color.BLACK); canvas.drawCircle(getWidth()/2, getHeight()/2, mRadius/2, paint4); paint5.setColor(Color.YELLOW); paint5.setStrokeWidth(3); paint5.setAntiAlias(true); paint5.setStrokeCap(Paint.Cap.BUTT); paint5.setStyle(Paint.Style.STROKE); canvas.drawCircle(getWidth()/2, getHeight()/2, mRadius/2, paint5); |
我希望你现在对我的回答满意。...
我有一个主意,首先使用
在带有分区的圆内绘制
1 | can.drawArc(oval, startAngle, sweepAngle, useCenter, paint) |
将angular值取为0 t0 60,然后再次绘制另一个具有相同中心的圆弧,取angular值为60至120,依此类推。每次在Paint中设置不同的颜色。完成内圆之后,几乎完成了所有工作。现在在第一个圆之后画一个具有相同中心但半径较小的白色圆,这样它将在第一个
上创建
希望它会对您有所帮助:)
嘿,我找到了查询的解决方案,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | final RectF rect1 = new RectF(); int mWidth = this.getWidth()/2; int mHeight = this.getHeight()/2; int mRadius = 130, mRadius1 = 50; rect1.set(mWidth -(mRadius-mRadius1), mHeight - (mRadius-mRadius1), mWidth + (mRadius-mRadius1), mHeight + (mRadius-mRadius1)); Paint paintLines = new Paint(); paintLines.setColor(Color.BLACK); paintLines.setStrokeWidth((mRadius-mRadius1)/2); paintLines.setAntiAlias(false); paintLines.setStrokeCap(Paint.Cap.BUTT); paintLines.setStyle(Paint.Style.STROKE); canvas.drawArc(rect1, 0, 1, false, paintLines); canvas.drawArc(rect1, 30, 1, false, paintLines); canvas.drawArc(rect1, 60, 1, false, paintLines); canvas.drawArc(rect1, 90, 1, false, paintLines); canvas.drawArc(rect1, 120, 1, false, paintLines); canvas.drawArc(rect1, 150, 1, false, paintLines); |