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 相关文章推荐
js验证是否为数字的总结
Apr 14 Javascript
如何用JavaScript动态呼叫函数(两种方式)
May 03 Javascript
JS实现日期加减的方法
Nov 29 Javascript
完美解决IE低版本不支持call与apply的问题
Dec 05 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
Apr 18 Javascript
js封装tab标签页实例分享
Dec 19 Javascript
bootstrap实现每隔5秒自动轮播效果
Dec 20 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
Jul 03 Javascript
详解vue-cli项目中怎么使用mock数据
May 29 Javascript
使用JS判断页面是首次被加载还是刷新
May 26 Javascript
vue计算属性无法监听到数组内部变化的解决方案
Nov 06 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
Nov 25 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
MYSQL数据库初学者使用指南
2006/11/16 PHP
PHP 采集程序 常用函数
2008/12/18 PHP
PHP set_error_handler()函数使用详解(示例)
2013/11/12 PHP
PHP中redis的用法深入解析
2014/02/20 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
document.designMode的功能与使用方法介绍
2007/11/22 Javascript
javascrip关于继承的小例子
2013/05/10 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
微信小程序 wxapp内容组件 progress详细介绍
2016/10/31 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
2016/11/25 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
layui问题之自动滚动二级iframe页面到指定位置的方法
2019/09/18 Javascript
JS 数组和对象的深拷贝操作示例
2020/06/06 Javascript
python列表去重的二种方法
2014/02/14 Python
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
Python检测一个对象是否为字符串类的方法
2015/05/21 Python
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
django rest framework之请求与响应(详解)
2017/11/06 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
python2.7实现FTP文件下载功能
2018/04/15 Python
python3读取csv和xlsx文件的实例
2018/06/22 Python
python文件拆分与重组实例
2018/12/10 Python
倩碧英国官网:Clinique英国
2018/08/10 全球购物
英语专业个人求职自荐信
2013/09/21 职场文书
和平主题的演讲稿
2014/01/12 职场文书
体育馆的标语
2014/06/24 职场文书
简易离婚协议书范本
2014/10/24 职场文书
导游词之西递宏村
2019/12/10 职场文书
SqlServer数据库远程连接案例教程
2021/07/15 SQL Server
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技
vue实现简易音乐播放器
2022/08/14 Vue.js