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中字符串里含有的回车换行替换成&amp;lt;br&amp;gt;的javascript代码
Apr 20 Javascript
jQuery图片的展开和收缩实现代码
Apr 16 Javascript
javascript 小数取整简单实现方式
May 30 Javascript
JS面向对象编程详解
Mar 06 Javascript
require简单实现单页应用程序(SPA)
Jul 12 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
Jan 04 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
Feb 27 Javascript
微信小程序自定义toast弹窗效果的实现代码
Nov 15 Javascript
pm2启动ssr失败的解决方法
Jun 29 Javascript
使用 node.js 模仿 Apache 小部分功能
Jul 07 Javascript
Vue打包后访问静态资源路径问题
Nov 08 Javascript
react中的DOM操作实现
Jun 30 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 curl模拟浏览器抓取网站信息
2013/10/28 PHP
php上传大文件设置方法
2016/04/14 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
2015/03/03 Javascript
JavaScript 深层克隆对象详解及实例
2016/11/03 Javascript
JS实现根据用户输入分钟进行倒计时功能
2016/11/14 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
layui table设置前台过滤转义等方法
2018/08/17 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
layui插件表单验证提交触发提交的例子
2019/09/09 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
django解决跨域请求的问题详解
2019/01/20 Python
Python利用pandas处理Excel数据的应用详解
2019/06/18 Python
python 普通克里金(Kriging)法的实现
2019/12/19 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
2020/03/11 Python
Python 绘制可视化折线图
2020/07/22 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
2020/08/27 Python
美国休闲服装品牌:Express
2016/09/24 全球购物
香港连卡佛百货官网:Lane Crawford
2019/09/04 全球购物
亚洲颇具影响力的男性在线购物零售商:His
2019/11/24 全球购物
大学校庆策划书
2014/01/31 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
2015年初三班主任工作总结
2015/05/21 职场文书
趣味运动会赞词
2015/07/22 职场文书
《槐乡的孩子》教学反思
2016/02/20 职场文书
Java输出Hello World完美过程解析
2021/06/13 Java/Android
教你部署vue项目到docker
2022/04/05 Vue.js
通过feDisplacementMap和feImage实现水波特效
2022/04/24 HTML / CSS