zoukankan      html  css  js  c++  java
  • canvas绘制波浪

    首先咱们先贴出效果出来,这是一个动态的波浪哦!!

    html部分:

     <canvas id="Theback" width="320">抱歉您的浏览器不支持canvas!</canvas>

    以上的canvas可以根据自己的需要改变他的宽高!!

    注:canvas标签中间的内容不会显示在页面上,当浏览器不支持canvas的时候才会显示!!!

    js部分:(一下代码已经是我测试通过的,不需要在修改就可以顺利绘制了!)

     function wavesurRecord() {
            //获取画布
            var beisizer = document.getElementById("Theback");
            var ContenofBeisizer = beisizer.getContext("2d"); //设置波浪海域(海浪宽度,高度)
            var beisizerwidth = beisizer.width;
            var beisizerheight = beisizer.height;
            var beisizerlinewidth = 2;//曲线
            var sinX = 0;
            var sinY = beisizerheight / 2.0;//轴长
            var axisLenght = beisizerwidth;//弧度宽度
            var waveWidth = 0.014;//海浪高度
            var waveHeight = beisizerheight / 15.0;
            var speed = 0.1; //数值越大速率越快
            var xofspeed = 0; //波浪横向的偏移量
            var rand = beisizerheight; //波浪高度
    
            ContenofBeisizer.lineWidth = beisizerlinewidth;
    
            // 创建静态的曲线
            var drawSin = function (xofspeed) {
                ContenofBeisizer.save();        //存放贝塞尔曲线的各个点
                var points = [];
                ContenofBeisizer.beginPath();        //创建贝塞尔点
                for (var x = sinX; x < sinX + axisLenght; x += 80 / axisLenght) {
                    // var y = -Math.sin((sinX + x) * waveWidth);  //测试请解开注释,注释下一行
                    var y = -Math.sin((sinX + x) * waveWidth + xofspeed);
                    // points.push([x, sinY + y * waveHeight]); //测试请解开注释,注释下一行
                    points.push([x, rand + y * waveHeight]);
                    ContenofBeisizer.lineTo(x, sinY + y * waveHeight);  //测试请解开注释,注释下一行
                    // ContenofBeisizer.lineTo(x, rand + y * waveHeight);
                }
    
                ContenofBeisizer.lineTo(axisLenght, beisizerheight);
                ContenofBeisizer.lineTo(sinX, beisizerheight);
                ContenofBeisizer.lineTo(points[0][0], points[0][1]);
                ContenofBeisizer.stroke();
                ContenofBeisizer.restore();       //贝塞尔曲线样式设置
                ContenofBeisizer.strokeStyle = "#3bc777";
                ContenofBeisizer.fillStyle = "#3bc777";
                ContenofBeisizer.fill();
            };
    
            var rendY = function () {
                ContenofBeisizer.clearRect(0, 0, beisizerwidth, beisizerheight);        //控制海浪高度
                var tmp = 0.1;
                rand -= tmp;
                var b = beisizerheight - rand;
                //控制循环涨潮
                if (parseInt(b) == beisizerheight) {
                    rand = beisizerheight;
                }
                drawSin(xofspeed);
                xofspeed += speed;
                requestAnimationFrame(rendY);
            };
    
            // 动态
            drawSin();
            rendY();
    
    
        }
  • 相关阅读:
    相似矩阵
    特征值和特征向量
    非齐次方程组的通解
    线性方程组解的性质和结构、基础解系
    高斯消元法求齐次线性方程的通解
    从零开始学 Web 之 HTML(三)表单
    从零开始学Web之HTML(二)标签、超链接、特殊符号、列表、音乐、滚动、head等
    从零开始学 Web 之 HTML(一)认识前端
    JavaScript基础(一)概述
    如何恢复windows的exe文件的默认打开方式
  • 原文地址:https://www.cnblogs.com/BLOGZR/p/10365741.html
Copyright © 2011-2022 走看看