使用HTML5在Canvas上绘制一个图钉

时间:2014-07-30 16:41:22

标签: html5 canvas

我需要在Canvas上使用HTML5绘制像http://www.clipartbest.com/clipart-9czEGGdRi这样的图钉。

这是我拥有的:http://jsfiddle.net/u5jNR/

var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var x = canvas.width / 2;
var y = canvas.height / 2;
var radius = 75;
var startAngle = .9 * Math.PI;
var endAngle = 2.1 * Math.PI;
var counterClockwise = false;
context.beginPath();
context.arc(x, y, radius, startAngle, endAngle, counterClockwise);
context.lineWidth = 15;
// line color
context.strokeStyle = 'black';
context.stroke();


var radius = 20;

context.beginPath();
context.arc(x, y, radius, 0, 2 * Math.PI, false);
context.fillStyle = 'green';
context.fill();
context.stroke();

我遇到的问题是我不知道如何扩展两端。

提前致谢

1 个答案:

答案 0 :(得分:3)

这是使用路径命令绘制图钉的示例。

假设你有一个物体来定义别针的x,y和amp;颜色:

var pin = { x:x, y:y, color:color };

然后你可以像这样绘制那个引脚:

function drawPin(pin){

    ctx.save();
    ctx.translate(pin.x,pin.y);

    ctx.beginPath();
    ctx.moveTo(0,0);
    ctx.bezierCurveTo(2,-10,-20,-25,0,-30);
    ctx.bezierCurveTo(20,-25,-2,-10,0,0);
    ctx.fillStyle=pin.color;
    ctx.fill();
    ctx.strokeStyle="black";
    ctx.lineWidth=1.5;
    ctx.stroke();
    ctx.beginPath();
    ctx.arc(0,-21,3,0,Math.PI*2);
    ctx.closePath();
    ctx.fillStyle="black";
    ctx.fill();

    ctx.restore();
}
相关问题