我想在画布上画一个椭圆形。基本上,我把四条贝塞尔曲线组合成一个椭圆形。
我成功地画出了一个椭圆形,但我不知道如何关闭它。
Codes:
//Paints for bazier curve
Paint bezierPaint = new Paint();
bezierPaint.setColor(Color.RED);
bezierPaint.setStyle(Paint.Style.STROKE);
bezierPaint.setStrokeCap(Paint.Cap.ROUND);
bezierPaint.setStrokeWidth(3.0f);
bezierPaint.setAntiAlias(true);
//Oval Path
Path ovalPath = new Path();
//Draw the first curve. from top point to right point
ovalPath.moveTo(160,0);
ovalPath.cubicTo(210, 0, 260, 100, 260, 150);
//Draw the second curve. from right point to bottom point
ovalPath.moveTo(260, 150);
ovalPath.cubicTo(260, 200, 210, 300, 160, 300);
//Draw the thrid curve. from bottom point to left point
ovalPath.moveTo(160, 300);
ovalPath.cubicTo(110, 300, 60, 200, 60, 150);
//Draw the fourth curve. from left point to top point
ovalPath.moveTo(60, 150);
ovalPath.cubicTo(60, 100, 110, 0, 160, 0);
**//I expect this oval close correctly. But in actually, the fourth curve was closed.
//Please see the image in attachment.How should I close this path as my expectation?**
ovalPath.close()
canvas.drawPath(ovalPath, bezierPaint);
最佳答案
把电话转到path.close()
。此函数用于将线段从当前绘制点添加到第一个绘制点。我认为不接这个电话没有什么坏处。
或者,多注意你的片段的方向,这样每个片段都从最后一个结束的地方开始,更重要的是,最后一个片段从第一个开始的地方结束。
或者按照marnaish说的做,用drawOval()
代替。
关于android - 如何关闭 Canvas 中的复杂路径?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15759582/