三角形路径的弯曲边?

时间:2011-04-10 20:39:04

标签: java android graphics canvas 2d

我在Canvas上绘制一个三角形,如:

canvas.moveTo(0, 30);
canvas.lineTo(40, 0);
canvas.lineTo(40, 40);
canvas.lineTo(40, 40);
canvas.lineTo(0, 30);

在我的画布上获得正确的三角形。但我需要稍微弯曲两侧并用特定颜色填充该路径。最简单的方法是什么?绘制弧线?但是如何填充对象呢?

This is what I need to get

谢谢!

1 个答案:

答案 0 :(得分:6)

编辑:我注意到你使用的是android的画布,而不是HTML Canvas,对不起。这个概念完全相同,除非你打电话给quadTo()而不是quadraticCurveTo(),所以我的例子仍然可以帮助你。

同样在Android上你使用canvas.drawPath(path, paint)并传入一个Paint.style设置为FILL_AND_STROKE的绘画。

您需要构建路径fill(),然后stroke(),以便获得带有笔划轮廓的填充路径。

要获得特定形状,最简单的方法是绘制两条二次曲线。二次曲线首先需要控制点x,y然后是终点x,y。两条曲线的控制点应位于所需三角形的中间。这是一个例子:

ctx.fillStyle = "lightgray";

ctx.moveTo(0, 100);
ctx.quadraticCurveTo(50, 50, 50, 0);
ctx.quadraticCurveTo(50, 50, 100, 100);
ctx.lineTo(0, 100);
ctx.fill();
ctx.stroke();

Here is that example live for you.