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 相关文章推荐
TextArea 控件的最大长度问题(js json)
Dec 16 Javascript
IE8 中使用加速器(Activities)
May 14 Javascript
原生js的弹出层且其内的窗口居中
May 14 Javascript
jQuery截取指定长度字符串代码
Aug 21 Javascript
一个不错的仿携程自定义数据下拉选择select
Sep 01 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
Dec 13 Javascript
jQuery实现本地预览上传图片功能
Jan 08 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
Jun 23 Javascript
详解vue.js之绑定class和style的示例代码
Aug 24 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
Aug 25 Javascript
记录vue项目中遇到的一点小问题
May 14 Javascript
使用flow来规范javascript的变量类型
Sep 12 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
PHP下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
浅析PHP的ASCII码转换类
2013/07/05 PHP
16个最流行的JavaScript框架[推荐]
2011/05/29 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
JavaScript实现将UPC转换成ISBN的方法
2015/05/26 Javascript
使用JavaScript制作一个简单的计数器的方法
2015/07/07 Javascript
Vue.js每天必学之构造器与生命周期
2016/09/05 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
AngularJS 文件上传控件 ng-file-upload详解
2017/01/13 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
js轮播图无缝滚动效果
2017/06/17 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
详解express与koa中间件模式对比
2017/08/07 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
详解React路由传参方法汇总记录
2020/11/29 Javascript
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
python爬虫的一个常见简单js反爬详解
2019/07/09 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
Python参数传递机制传值和传引用原理详解
2020/05/22 Python
Django通过json格式收集主机信息
2020/05/29 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
css3实现画半圆弧线的示例代码
2017/11/06 HTML / CSS
贝尔帐篷精品店:Bell Tent Boutique
2019/06/12 全球购物
化学教师教学反思
2014/01/17 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
党支部书记四风问题整改措施
2014/09/24 职场文书
结婚当天新郎保证书
2015/05/08 职场文书
病假条格式范文
2015/08/17 职场文书
祝福语集锦:送给闺蜜的生日祝福语
2019/10/08 职场文书
Nginx虚拟主机的搭建的实现步骤
2022/01/18 Servers