zoukankan      html  css  js  c++  java
  • 无聊的时候,用canvas画些图

    一、先来个矩形

    步骤:

    1 获取canvas元素

    2 取得上下文(context)

    3 填充与绘制边框

    4 设定绘图样式(填充样式和边框样式)

    5 指定线宽

    6 指定颜色值

    7 绘制矩形

    好了,上代码。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body onload="draw('canvas')">
        <h1>canvas画矩形</h1>
        <canvas id="canvas" width='800' height="800" />
    </body>
    <script>
        function draw(id) {
            // canvas画图的小技巧:先给颜色,再给宽高
            var canvas = document.getElementById(id);
            if (canvas == null) return false;
    
            var context = canvas.getContext('2d');
            context.fillStyle = '#EEEEFF'; // 给最外层大盒子填充颜色
            context.fillRect(0, 0, 600, 600); // 给最外层大盒子宽高 x,y,width,height    
            context.fillStyle = 'red';// 给小盒子填充颜色
            context.strokeStyle = 'blue'; // 给小盒子边框颜色
            context.lineWidth = 20; // 给小盒子边框宽度值
            context.fillRect(50, 50, 100, 100); // 给小盒子宽高
            context.strokeRect(50, 50, 100, 100); // 给小盒子边框修饰宽高
        }
    </script>
    
    </html>

    效果:

    矩形是不是还蛮简单的,再来一个简单的。

    二、画个圆形

    步骤:

    1 开始创建路径

    context.beginPath();

    2 创建图形的路径

    // x,y分别为绘制起点的横纵坐标,radius是圆的半径,startAngle,endAngle分别是起始角度,结束角度,要用π来表示。antclockwise表示是否为顺时针,true顺时针 false逆时针

    context.arc(x,y,radius,startAngle,endAngle,antclockwise); 

    3 路径创建完成后,关闭路径

    context.closePath();

    4 设定绘制样式,进行图形绘制

    来了,上代码。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body onload="draw('canvas')">
        <h1>canvas画圆</h1>
        <canvas id="canvas" width='800' height="800" />
    </body>
    <script>
        function draw(id) {
            var canvas = document.getElementById(id);
            if (canvas == null) return false;
    
            var context = canvas.getContext('2d');
            context.fillStyle = '#EEEEFF'; // 给最外层大盒子填充颜色
            context.fillRect(0, 0, 600, 600); // 给最外层大盒子宽高 x,y,width,height    
            context.beginPath(); // 创建路径
            context.arc(100,100,50,0,Math.PI*2,true);  // arc(x,y,radius,startAngle,endAngle,antclockwise)
            context.closePath(); // 关闭路径
            context.fillStyle = 'blue';// 给圆填充颜色
            context.fill();
        }
    </script>
    
    </html>

    效果:

     这个圆看起来有点单调,咱来一串吧。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body onload="draw('canvas')">
        <h1>canvas画圆</h1>
        <canvas id="canvas" width='800' height="800" />
    </body>
    <script>
        function draw(id) {
            var canvas = document.getElementById(id);
            if (canvas == null) return false;
    
            var context = canvas.getContext('2d');
            context.fillStyle = '#EEEEFF'; // 给最外层大盒子填充颜色
            context.fillRect(0, 0, 600, 600); // 给最外层大盒子宽高 x,y,width,height    
    
            for (i = 1; i < 10; i++) {
                context.beginPath(); // 创建路径
                context.arc(i*30, i*30, i*20, 0, Math.PI * 2, true); // arc(x,y,radius,startAngle,endAngle,antclockwise)
                context.closePath(); // 关闭路径
                context.fillStyle = 'red'; // 给圆填充颜色
                // context.fillStyle = 'rgba(255,0,0,0.25)'; // 给圆填充颜色
                context.fill();
            }
        }
    </script>
    
    </html>

    像个灯泡。再改一点。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body onload="draw('canvas')">
        <h1>canvas画圆</h1>
        <canvas id="canvas" width='800' height="800" />
    </body>
    <script>
        function draw(id) {
            var canvas = document.getElementById(id);
            if (canvas == null) return false;
    
            var context = canvas.getContext('2d');
            context.fillStyle = '#EEEEFF'; // 给最外层大盒子填充颜色
            context.fillRect(0, 0, 600, 600); // 给最外层大盒子宽高 x,y,width,height    
    
            for (i = 1; i < 10; i++) {
                context.beginPath(); // 创建路径
                context.arc(i*30, i*30, i*20, 0, Math.PI * 2, true); // arc(x,y,radius,startAngle,endAngle,antclockwise)
                context.closePath(); // 关闭路径
                context.fillStyle = 'rgba(255,0,0,0.25)'; // 给圆填充颜色
                context.fill();
            }
        }
    </script>
    
    </html>

    关闭路径以后。

    context.beginPath();和
    context.closePath();都不要了。

     渐变了,还挺好看。

  • 相关阅读:
    Golang 实现 Redis(9): 使用GeoHash 搜索附近的人
    Vuex的使用以及持久化的实现(2.0版本)
    Vue 手写一个 日期组件(简易)
    Makefile学习
    字符串的帧解析
    linux学习之工具
    CAN总线学习
    网页编程学习
    linux学习驱动之常用驱动
    linux学习之交叉编译环境
  • 原文地址:https://www.cnblogs.com/afafaa/p/15706921.html
Copyright © 2011-2022 走看看