canvas API 包含一些似乎可以很好地完成工作的函数:
-
.moveTo/.lineTo 换行路径
-
.arc 用于圆形路径
-
.stroke 描边路径(线)
-
.fill 填充路径(圆圈)
这是一个非常简单的概念证明:http://jsfiddle.net/eGjak/275/。
我对直线和圆都使用了(x, y),这意味着这些直线从两个圆的中点延伸到两个圆的中点。 r 是圆的半径。
var ctx = $('#cv').get(0).getContext('2d');
var circles = [ // smaller circles
{ x: 50, y: 50, r: 25 },
{ x: 250, y: 50, r: 25 },
{ x: 250, y: 250, r: 25 },
{ x: 50, y: 250, r: 25 },
];
var mainCircle = { x: 150, y: 150, r: 50 }; // big circle
function drawCircle(data) {
ctx.beginPath();
ctx.arc(data.x, data.y, data.r, 0, Math.PI * 2); // 0 - 2pi is a full circle
ctx.fill();
}
function drawLine(from, to) {
ctx.beginPath();
ctx.moveTo(from.x, from.y);
ctx.lineTo(to.x, to.y);
ctx.stroke();
}
drawCircle(mainCircle); // draw big circle
$.each(circles, function() { // draw small circles and lines to them
drawCircle(this);
drawLine(mainCircle, this);
});