CSS3-canvas绘图

<html>

<head>
    <meta charset="utf-8">
    <title>CSS3-canvas绘图</title>
    <meta name="keyword" content="CSS3-canvas绘图">
    <meta name="discription" content="CSS3-canvas绘图">
    <style>
    canvas {
        background-color: rgba(0, 0, 0, 0.1)
    }

    h2 {
        border-top: 1px solid red;
    }
    </style>
</head>

<body>

 

    <h2>1.cavas-矩形绘制</h2>
    <canvas id="my_canvas1" width="600px;" height="110px"></canvas>
    <script>
    drawCanvas1();

    function drawCanvas1() {
        var canvas = document.getElementById("my_canvas1");
        if (!canvas) {
            return false;
        }
        var context = canvas.getContext("2d");
        context.lineWidth = 4; //设置绘制线条粗细
        context.fillRect(0, 0, 100, 100); //X轴,Y轴,宽,高
        context.fillStyle = "red"; //填充颜色
        context.strokeRect(120, 0, 100, 100);
        context.strokeStyle = "blue";
        context.fillRect(240, 0, 100, 100);
        context.fillStyle = "rgba(255,0,0,0.4)";
    }
    </script>

 

    <h2>2.cavas-擦除矩形区域</h2>
    <canvas id="my_canvas2" width="600px;" height="110px"></canvas>
    <script>
    drawCanvas2();

    function drawCanvas2() {
        var canvas = document.getElementById("my_canvas2");
        if (!canvas) {
            return false;
        }
        var context = canvas.getContext("2d");
        context.fillRect(0, 0, 100, 100);
        context.fillStyle = "red";
        context.strokeRect(120, 0, 100, 100);
        context.strokeStyle = "blue";
        context.fillRect(240, 0, 100, 100);
        context.fillStyle = "rgba(255,0,0,0.4)";

        context.clearRect(20, 20, 300, 20);
    }
    </script>

 

    <h2>3.cavas-绘制圆弧</h2>
    <canvas id="my_canvas3" width="600px;" height="110px"></canvas>
    <script>
    drawCanvas3();

    function drawCanvas3() {
        var canvas = document.getElementById("my_canvas3");
        if (!canvas) {
            return false;
        }
        var context = canvas.getContext("2d");
        context.beginPath();
        context.arc(50, 50, 50, 0, Math.PI * 2, true);
        context.fillStyle = "red";
        context.fill();
        context.arc(50, 50, 50, 0, Math.PI * 2, true);
        context.strokeStyle = "green";
        context.closePath();
        context.stroke();
        /*1、系统默认在绘制第一个路径的开始点为beginPath
             *2、如果画完前面的路径没有重新指定beginPath,
             那么画第其他路径的时候会将前面最近指定的beginPath后的全部路径重新绘制
             */

    }
    </script>

 

    <h2>4.cavas-绘制线段</h2>
    <canvas id="my_canvas4" width="600px;" height="110px"></canvas>
    <script>
    drawCanvas4();

    function drawCanvas4() {
        var canvas = document.getElementById("my_canvas4");
        if (!canvas) {
            return false;
        }
        var context = canvas.getContext("2d");
        context.beginPath();
        context.strokeStyle = "red";
        context.fillStyle = "green";
        context.lineTo(0, 0); //从上一个绘制点到当前点绘制直线
        context.lineTo(50, 50);
        context.moveTo(100, 50); //移动绘制点到指定坐标
        context.lineTo(150, 0);
        context.lineTo(200, 50);
        //context.closePath();//绘制起点回到原点
        context.stroke();
    }
    </script>

 

    <h2>5.cavas-绘制贝赛尔曲线</h2>
    <canvas id="my_canvas5" width="600px;" height="300px"></canvas>
    <script>
    drawCanvas5();

    function drawCanvas5() {
        var canvas = document.getElementById("my_canvas5");
        if (!canvas) {
            return false;
        }
        var context = canvas.getContext("2d");
        context.moveTo(50, 50);
        context.bezierCurveTo(50, 50, 150, 50, 150, 150); //绘制贝塞尔曲线
        context.stroke();

        context.quadraticCurveTo(150, 250, 250, 250); //绘制二次样条曲线
        context.stroke();
    }
    </script>
    <h2>6.cavas-绘制线性渐变</h2>
    <canvas id="my_canvas6" width="600px;" height="300px"></canvas>
    <script>
    drawCanvas6();

    function drawCanvas6() {
        var canvas = document.getElementById("my_canvas6");
        if (!canvas) {
            return false;
        }
        var context = canvas.getContext("2d");
        var gl = context.createLinearGradient(0, 0, 0, 200); //起点(X,Y),结点(X,Y)
        gl.addColorStop(0, 'rgb(255,0,0)');
        gl.addColorStop(0.5, 'rgb(0,255,0)');
        gl.addColorStop(1, 'rgb(0,0,255)');
        context.fillStyle = gl;
        context.fillRect(0, 0, 200, 200);

    }
    </script>

 

    <h2>7.cavas-绘制径向渐变</h2>
    <canvas id="my_canvas7" width="600px;" height="300px"></canvas>
    <script>
    drawCanvas7();

    function drawCanvas7() {
        var canvas = document.getElementById("my_canvas7");
        if (!canvas) {
            return false;
        }
        var context = canvas.getContext("2d");
        var gl = context.createRadialGradient(100, 100, 0, 100, 100, 50);
        //发散开始圆原点坐标(X,Y),发散开始圆半径,发散结束圆原点坐标(X,Y),发散结束圆半径
        gl.addColorStop(0, 'rgb(255,0,0)');
        gl.addColorStop(1, 'rgb(0,0,255)');
        context.fillStyle = gl;
        context.arc(100, 100, 100, 0, Math.PI * 2, true);
        context.closePath();
        context.fill();

    }
    </script>

 


    <h2>8.cavas-绘制图形变形</h2>
    <canvas id="my_canvas8" width="600px;" height="400px"></canvas>
    <script>
    drawCanvas8();

    function drawCanvas8() {
        var canvas = document.getElementById("my_canvas8");
        if (!canvas) {
            return false;
        }
        var context = canvas.getContext("2d");
        context.save(); //保存当前context的状态;
        context.fillStyle = "#eee";
        context.fillRect(0, 0, 400, 300);

        context.fillStyle = 'rgba(255,0,0,0.1)';
        context.fillRect(0, 0, 100, 100);
        context.translate(100, 100);
        context.fillRect(0, 0, 100, 100);
        context.scale(0.5, 0.5);
        context.fillRect(0, 0, 100, 100);
        context.rotate(Math.PI / 4);
        context.fillRect(0, 0, 100, 100);
    }
    </script>

 

    <h2>9.cavas--矩形变换context.transform(m11,m12,m21,m22,dx,dy)</h2>
    <canvas id="my_canvas9" width="600px;" height="400px"></canvas>
    <script>
    drawCanvas9();

    function drawCanvas9() {
        var canvas = document.getElementById("my_canvas9");
        if (!canvas) {
            return false;
        }
        var context = canvas.getContext("2d");
        context.save(); //保存当前context的状态;
        context.fillStyle = "#eee";
        context.fillRect(0, 0, 400, 300);

        context.fillStyle = 'rgba(255,0,0,0.1)';
        context.fillRect(0, 0, 100, 100);
        //context.transform(100, 100, 5, 0.5, 0.5);

    }
    </script>

 

    <h2>10.cavas--矩形变换context.globalCompositeOperation</h2>
    <canvas id="my_canvas10" width="600px;" height="400px"></canvas>
    <script>
    drawCanvas10();

    function drawCanvas10() {
        var canvas = document.getElementById("my_canvas10");
        if (!canvas) {
            return false;
        }
        var context = canvas.getContext("2d");
        context.save(); //保存当前context的状态;

        /*
        source-over(默认值):在原有图形上绘制新图形
        destination-over:在原有图形下绘制新图形
        source-in:显示原有图形和新图形的交集,新图形在上,所以颜色为新图形的颜色
        destination-in:显示原有图形和新图形的交集,原有图形在上,所以颜色为原有图形的颜色
        source-out:只显示新图形非交集部分
        destination-out:只显示原有图形非交集部分
        source-atop:显示原有图形和交集部分,新图形在上,所以交集部分的颜色为新图形的颜色
        destination-atop:显示新图形和交集部分,新图形在下,所以交集部分的颜色为原有图形的颜色
        lighter:原有图形和新图形都显示,交集部分做颜色叠加
        xor:重叠飞部分不现实
        copy:只显示新图形
         */

        var options = new Array(
            "source-over",
            "destination-over",
            "source-in",
            "destination-in",
            "source-out",
            "destination-out",
            "source-atop",
            "destination-atop",
            "lighter",
            "xor",
            "copy"
        );

        var i = 0;
        if (i == 10) {
            i = 0;
        } else {
            i++;
        }
        context.fillStyle = "blue";
        context.fillRect(10, 10, 60, 60);
        context.globalCompositeOperation = options[0];
        context.beginPath();
        context.fillStyle = "red";
        context.arc(60, 60, 30, 0, Math.PI * 2, false);
        context.fill();
    }
    </script>

 

    <h2>11.cavas--绘制阴影</h2>
    <canvas id="my_canvas11" width="600px;" height="400px"></canvas>
    <script>
    drawCanvas11();

    function drawCanvas11() {
        var canvas = document.getElementById("my_canvas11");
        if (!canvas) {
            return false;
        }
        var context = canvas.getContext("2d");
        context.save(); //保存当前context的状态;

        context.fillStyle = "blue";
        context.shadowOffsetX = 10;
        context.shadowOffsetY = 10;
        context.shadowColor = "rgba(255,0,0,0.5)";
        context.shadowBlur = 1.5;
        context.fillRect(10, 10, 60, 60);
        context.fill();

    }
    </script>

 

    <h2>12.cavas--图像平铺</h2>
    <canvas id="my_canvas12" width="600px;" height="400px"></canvas>
    <script>
    drawCanvas12();

    function drawCanvas12() {
        var canvas = document.getElementById("my_canvas12");
        if (!canvas) {
            return false;
        }
        var type = ["no-repeat", "repeat-x", "repeat-y", "repeat"];
        var context = canvas.getContext("2d");
        context.save(); //保存当前context的状态;

        var image = new Image();

        image.src = "images/logo.png";
        image.onload = function() {
            context.clearRect(0, 0, 400, 400);
            var ptrn = context.createPattern(image, type[3]);
            context.fillStyle = ptrn;
            context.fillRect(0, 0, 400, 400);

        }


    }
    </script>

 

    <h2>13.cavas--图像裁剪</h2>
    <canvas id="my_canvas13" width="600px;" height="400px"></canvas>
    <script>
    drawCanvas13();

    function drawCanvas13() {
        var canvas = document.getElementById("my_canvas13");
        if (!canvas) {
            return false;
        }

        var context = canvas.getContext("2d");
        context.fillStyle = "black";
        context.fillRect(0, 0, 400, 300);
        image = new Image();
        image.onload = function() {
            drawImg(context, image);
        }
        image.src = "images/logo.png";

    }

    function drawImg(context, image) {
        //圆形裁剪区
        //createCircleClip(context)
        //星形裁剪区
        create5StarClip(context);
        context.drawImage(image, 0, 0);

    }

    function createCircleClip(context) {
        context.beginPath();
        context.arc(200, 150, 100, 0, Math.PI * 2, true);
        context.closePath();
        context.clip();
    }

    function create5StarClip(context) {
        var n = 0;
        var dx = 200;
        var dy = 135;
        var s = 150;
        context.beginPath();
        var x = Math.sin(0);
        var y = Math.cos(0);
        var dig = Math.PI / 5 * 4;
        for (var i = 0; i < 5; i++) {
            var x = Math.sin(i * dig);
            var y = Math.cos(i * dig);
            context.lineTo(dx + x * s, dy + y * s);
        }
        context.closePath();
        context.clip();
    }



    </script>
</body>

</html>

  

posted @ 2018-04-12 17:42  SunLike阿理旺旺  阅读(248)  评论(0编辑  收藏  举报