javascript实现点击产生随机图形


Posted in Javascript onJanuary 25, 2021

本文实例为大家分享了javascript实现点击产生随机图形的具体代码,供大家参考,具体内容如下

点击产生随机图形

效果如下:

javascript实现点击产生随机图形

用javascript来实现

主要用canvas和随机函数完成各种图形

第一步

在HTML和CSS中创建出现图形的矩形和两个按钮。第一个按钮用来产生图形,第二个按钮用来清除产生的所有图形。

<style>
  *{
   margin: 0;
   padding: 0;
  }
  #canvas{
   border: solid 1px red;
   display: block;
   margin: 0 auto;
  }
  #father{
   width: 200px;
   margin:0 auto;
   
  }
  #btn{
   margin-right: 40px;
   cursor: pointer;
  }
  #cle{
   cursor: pointer;
  }
</style>
<body>
 <canvas id="canvas" width="600" height="600"></canvas>
 <div id="father">
  <input type="button" id="btn" value="点击生成">
  <input type="button" id="cle" value="点击清除">
 </div>
</body>

第二步

在javascript中分别创建用来随机颜色的函数,点击随机产生图形的函数,点击清除屏幕的函数。

var canvas=document.getElementById("canvas");
 var context=canvas.getContext("2d");
 var btn=document.getElementById("btn");
 var cle=document.getElementById("cle");

设置图形的随机颜色

function color(){
  var r=Math.floor(Math.random()*255);
  var g=Math.floor(Math.random()*255);
  var b=Math.floor(Math.random()*255);
  var a=Math.random();
  var bg="rgba("+r+","+g+","+b+","+a+")";
  return bg;
 }

设置点击按钮随机产生图形的函数,第一种实心和空心矩形,第二种实心和空心圆,第三种直线,它们的位置和大小分别写随机函数,再分别加上canvas代码,用来画图形,如context.beginPath()-context closePath()。

btn.onclick=function(){
  var random=Math.floor(Math.random()*3+1);
  if(random==1){
   var rectr=Math.floor(Math.random()*2);
   var rectx=Math.floor(Math.random()*600);
   var recty=Math.floor(Math.random()*600);
   var rectwidth=Math.floor(Math.random()*200+200);
   var rectheight=Math.floor(Math.random()*200+200);
   if(rectr== 0){
    context.beginPath();
    context.strokeStyle=color();
    context.strokeRect(rectx,recty,rectwidth,rectheight)
    context.closePath();
   }
   else {
    context.beginPath();
    context.fillStyle=color();
    context.fillRect(rectx,recty,rectwidth,rectheight);
    context.closePath();
   }
  }
  else if(random == 2){
   var arcr=Math.floor(Math.random()*2);
   var arcx=Math.floor(Math.random()*600);
   var arcy=Math.floor(Math.random()*600);
   var arcr=Math.floor(Math.random()*300);
   if(arcr==0){
    context.beginPath();
    context.strokeStyle=color();
    context.arc(arcx,arcy,arcr,0,2*Math.PI,false);
    context.stroke();
    context.closePath();
   }
  
   else{
    context.beginPath();
    context.fillStyle=color();
    context.arc(arcx,arcy,arcr,0,2*Math.PI,false);
    context.fill();
    context.closePath();
   }
  }
  else if(random==3){
   var movex=Math.floor(Math.random()*600);
   var movey=Math.floor(Math.random()*600);
   var linex=Math.floor(Math.random()*600);
   var liney=Math.floor(Math.random()*600);
   var linew=Math.floor(Math.random()*20);
   context.beginPath();
   context.strokeStyle=color();
   context.moveTo(movex,movey);
   context.lineTo(linex,liney);
   context.lineWidth=linew;
   context.stroke();
   context.closePath();
  }
}

第三步

最后创建点击清除屏幕的按钮函数,根据创建的屏幕大小,在canvas中添加 context.clearRect(0,0,600,600);可实现清除屏幕。

cle.onclick=function(){
  context.beginPath();
  context.clearRect(0,0,600,600);
  context.closePath();
 }

点击产生随机图形的效果完成了!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 简短右键菜单 多浏览器兼容
Jan 01 Javascript
php实例分享之实现显示网站运行时间
May 20 Javascript
Jquery结合HTML5实现文件上传
Jun 25 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
Aug 13 Javascript
AngularJS基础 ng-mouseleave 指令详解
Aug 02 Javascript
完美解决IE不支持Data.parse()的问题
Nov 24 Javascript
JS如何设置元素样式的方法示例
Aug 28 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
Sep 19 Javascript
Vue中的无限加载vue-infinite-loading的方法
Apr 08 Javascript
JavaScript调用模式与this关键字绑定的关系
Apr 21 Javascript
JS实现处理时间,年月日,星期的公共方法示例
May 31 Javascript
js实现飞机大战游戏
Aug 26 Javascript
如何在Vue项目中添加接口监听遮罩
Jan 25 #Vue.js
json.stringify()与json.parse()的区别以及用处
Jan 25 #Javascript
使用vue3重构拼图游戏的实现示例
Jan 25 #Vue.js
ReactRouter的实现方法
Jan 25 #Javascript
Javascript中的奇葩知识,你知道吗?
Jan 25 #Javascript
vue 计算属性和侦听器的使用小结
Jan 25 #Vue.js
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
Jan 25 #Javascript
You might like
PHP5.2下chunk_split()函数整数溢出漏洞 分析
2007/06/06 PHP
PHP cron中的批处理
2008/09/16 PHP
如何设置mysql允许外网访问
2013/06/04 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
关于laravel 日志写入失败问题汇总
2019/10/17 PHP
PHP基于进程控制函数实现多线程
2020/12/09 PHP
javascript实现的在当前窗口中漂浮框的代码
2010/03/15 Javascript
jquery 列表双向选择器之改进版
2013/08/09 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
Vue-Router模式和钩子的用法
2018/02/28 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
js form表单input框限制20个字符,10个汉字代码实例
2019/04/12 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
浅析vue中的provide / inject 有什么用处
2019/11/10 Javascript
python从子线程中获得返回值的方法
2019/01/30 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
Python通过yagmail实现发送邮件代码解析
2020/10/27 Python
SQL Server笔试题
2012/01/10 面试题
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
2015/10/13 面试题
汽车专业大学生职业生涯规划范文
2014/01/07 职场文书
前厅收银主管岗位职责
2014/02/04 职场文书
会计岗位描述
2014/02/22 职场文书
房产买卖委托公证书
2014/04/04 职场文书
销售求职信范文
2014/05/26 职场文书
2014年发展党员工作总结
2014/11/12 职场文书
sass 常用备忘案例详解
2021/09/15 HTML / CSS