日期:2014-05-17  浏览次数:20786 次

谁用html5 canvas画过五角星啊
JScript code

//画五角星
function draw11(id) {
    var myCanvas = document.getElementById(id);
    var context = myCanvas.getContext("2d");

    //创建五角星
    var shape = {};
    shape.star = function (l) {
        var rad1 = Math.sin(0.4 * Math.PI);     //sin(72)
        var rad2 = Math.cos(0.4 * Math.PI);      //cos(72)
        var rad3 = Math.sin(0.2 * Math.PI);      //sin(36)
        var rad4 = Math.cos(0.2 * Math.PI);      //cos(36)

        with (context) {
            moveTo(0, -l * rad1);
            lineTo(l * rad2, -10);
            lineTo(l + l * rad2, 0);
            lineTo(l * rad2 + 2 * l * rad2 * rad2, l * rad3);
            lineTo(l * rad4, 2 * l * rad1 * rad1 - l * rad1 + l * rad3);
            lineTo(0, 2 * l * rad1 * rad1 - l * rad1);
            lineTo(-l * rad4, 2 * l * rad1 * rad1 - l * rad1 + l * rad3);
            lineTo(-l * rad2 - 2 * l * rad2 * rad2, l * rad3);
            lineTo(-l - l * rad2, 0);
            lineTo(-l * rad2, 0);
            lineTo(0, -l * rad1);
        }
    }
   
   // context.translate(10, 10);

    context.beginPath();
    //context.scale(1, 1);
    //context.rotate(5);
    //context.translate(-100, -100);
    shape.star(30);
    context.fillStyle = "red";
    context.fill();
    context.strokeStyle = "black";
   context.stroke();
    
}




这是我在网上找的一个例子,下面那些scale和translate 我都去掉了,因为在一个canvas中重复画的时候会出现偏移。

我的目的是想得到一个五角星,在这个canvas的中间显示,不论我重复画多少次,都要在同一个位置。

求大神帮我看看

------解决方案--------------------
等着接分
------解决方案--------------------
接分来看看,怎么解决的。