zoukankan      html  css  js  c++  java
  • 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>
    

      

  • 相关阅读:
    MySQL8安装及使用当中的一些注意事项
    设计模式-观察者模式
    在线教育项目-day12【完善后端整合前端】
    在线教育项目-day12【微信扫码登录】
    在线教育项目-day12【OAuth2】
    在线教育项目-day12【完善登陆页面】
    在线教育项目-day12【整合前端登陆注册页面(2)】
    在线教育项目-day12【整合前端登陆注册页面(1)】
    在线教育项目-day12【解析oken信息】
    在线教育项目-day12【注册接口】
  • 原文地址:https://www.cnblogs.com/SunlikeLWL/p/8809252.html
Copyright © 2011-2022 走看看