Canvas 自定义形状填充问题
Canvas custom shape fill issue
我需要在 Canvas 中创建自定义形状,以便以人形显示图形。
我已经创建了形状,但是当我尝试填充它时,它没有被正确填充。即有些部分缺失,有些部分溢出。
这是我的演示 link:http://jsfiddle.net/vqbjqndm/
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
context.beginPath();
context.arc(65,60 ,35,0,Math.PI*2,true);
context.moveTo(5,100);
context.lineTo(5, 300);
context.moveTo(35,300);
context.arc(20, 300, 15, 0, Math.PI);
context.moveTo(35,300);
context.lineTo(35, 250);
context.lineTo(95, 250);
context.lineTo(95, 300);
context.moveTo(125,300);
context.arc(110, 300, 15, 0, Math.PI);
context.moveTo(125,300);
context.lineTo(125,100);
context.lineTo(5, 100);
context.fill();
你在画圆的时候遇到了麻烦。
你在 (5, 300),然后移动到 (35,300),现在你将圆圈拉回 (5, 100),然后移动回 (35, 300)。那会弄乱你的面具。
相反,您可以通过在 acr() 函数的末尾添加参数 true
来逆时针绘制圆:
之前:context.arc(110, 300, 15, 0, Math.PI);
之后:context.arc(110, 300, 15, Math.PI, 0, true);
如您所见,我还反转了弧度值
我需要在 Canvas 中创建自定义形状,以便以人形显示图形。 我已经创建了形状,但是当我尝试填充它时,它没有被正确填充。即有些部分缺失,有些部分溢出。
这是我的演示 link:http://jsfiddle.net/vqbjqndm/
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
context.beginPath();
context.arc(65,60 ,35,0,Math.PI*2,true);
context.moveTo(5,100);
context.lineTo(5, 300);
context.moveTo(35,300);
context.arc(20, 300, 15, 0, Math.PI);
context.moveTo(35,300);
context.lineTo(35, 250);
context.lineTo(95, 250);
context.lineTo(95, 300);
context.moveTo(125,300);
context.arc(110, 300, 15, 0, Math.PI);
context.moveTo(125,300);
context.lineTo(125,100);
context.lineTo(5, 100);
context.fill();
你在画圆的时候遇到了麻烦。
你在 (5, 300),然后移动到 (35,300),现在你将圆圈拉回 (5, 100),然后移动回 (35, 300)。那会弄乱你的面具。
相反,您可以通过在 acr() 函数的末尾添加参数 true
来逆时针绘制圆:
之前:context.arc(110, 300, 15, 0, Math.PI);
之后:context.arc(110, 300, 15, Math.PI, 0, true);
如您所见,我还反转了弧度值