见这里 - http://schnell.dreamhosters.com/nysbc/test6.php
JSFiddle - http://jsfiddle.net/VauFH/
绘制文本的部分...
function draw_arc_text(ctx, str, radius){
ctx.save();
str = str.toUpperCase();
var radians_per_letter = 8 * Math.PI/180;
ctx.rotate((105 - (radius/60)) * Math.PI/180);
for (var n = 0; n < str.length; n++) {
ctx.save();
ctx.rotate(n * radians_per_letter);
ctx.fillText(str[n], 0, -radius);
ctx.restore();
}
ctx.restore();
}
正如您可能知道的那样,彩色光盘顶部的文本之间的间距有点偏离。我尝试过为每个字母设置一定数量的弧度/度数,但是半径越远,间距就越大,因此最外面的文本开始快速分离。我还尝试制定某种公式,将半径纳入每个字母的间距,但我似乎也不能完全正确。有人有想法么?
此外,效率方面的任何调整也将受到赞赏。我喜欢尽可能优化。