zoukankan      html  css  js  c++  java
  • canvas绘制验证码

    css样式:
    <style>
    body{
      text-align: center;
    }
    canvas{
      background:#ddd;
    }
    </style>

    body中添加标签canvas:
      <canvas id="c3"></canvas>

    js:
    //创建两个变量保存验证码的宽度和高度
      var w = 120;
      var h = 30;
    //将变量值赋值给canvas
      c3.width = w;
      c3.height = h;
    //获取画笔
      var ctx = c3.getContext("2d");
    //创建两个函数,返回指定范围内的随机数,随机颜色
    //随机数
      function rn(min,max){
        var n = Math.random()*(max-min)+min;
        return Math.floor(n);
      }
    //随机颜色
      function rc(min,max){
        var r = rn(min,max);
        var g = rn(min,max);
        var b = rn(min,max);
        return `rgb(${r},${g},${b})`;
    }
    //填充的背景
      ctx.fillStyle=rc(180,230);
      ctx.fillRect(0,0,w,h);
    //创建一个随机的文字[字母和数字]4个
      var pool = "ABCDEFGHIJKabced胡歌0123456789哈哼哈哈";
      var str ="";
      for(var i = 0;i<4;i++){
        var index = Math.floor(Math.random()*pool.length);
        str +=pool[index];
    }
    //console.log(str);
      ctx.font = "30px SimHei";
      ctx.fillStyle = rc(80,180);//文字颜色
      ctx.textBaseline="top";
      ctx.fillText(str,20,0);//在(20,0)处开始填充文字
    //绘制6条干扰线
      for(var i = 0;i<6;i++){
        ctx.strokeStyle = rc(0,255);
        ctx.beginPath();
        ctx.moveTo(rn(0,w),rn(0,h));
        ctx.lineTo(rn(0,w),rn(0,h));
        ctx.stroke();
      }
    //绘制50个干扰点
      for(var i = 0;i<50;i++){
        ctx.fillStyle = rc(0,255);
        ctx.beginPath();
        ctx.arc(rn(0,w),rn(0,h),1,0,2*Math.PI);
        ctx.fill();
      }

  • 相关阅读:
    System.Configuration引用后ConfigurationManager方法用不了
    HTTP 错误 500.23
    slide ——首尾相接の平滑切换效果
    函数式编程初探之回调
    Call & Apply. It's easy!
    【W3C】 CSS3选择器
    再谈原型和原型链
    ECMA学习小结(3)——constructor 和 prototype
    ECMA学习小结(2)——一切皆对象
    ECMA学习小结(1)——什么是ECMAScript,JAVAScript与ECMA的关系
  • 原文地址:https://www.cnblogs.com/wangruifang/p/7509565.html
Copyright © 2011-2022 走看看