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 EasyUI API 中文文档 - Menu菜单
Oct 03 Javascript
jQuery动态添加 input type=file的实现代码
Jun 14 Javascript
原生JS可拖动弹窗效果实例代码
Nov 09 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
Jun 10 Javascript
javascript中局部变量和全局变量的区别详解
Feb 27 Javascript
JavaScript截断字符串的方法
Jul 15 Javascript
详解Vuejs2.0之异步跨域请求
Apr 20 Javascript
Angular.Js之Scope作用域的学习教程
Apr 27 Javascript
JS中正则表达式要注意lastIndex属性
Aug 08 Javascript
ES6中Array.includes()函数的用法
Sep 20 Javascript
详解ajax的data参数错误导致页面崩溃
Apr 30 Javascript
js实现页面图片消除效果
Mar 24 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 adodb连接不同数据库
2009/03/19 PHP
php实现xml转换数组的方法示例
2017/02/03 PHP
js随机颜色代码的多种实现方式
2013/04/23 Javascript
javascript中文本框中输入法切换的问题
2013/12/10 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
js中window.open()的所有参数详细解析
2014/01/09 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
javascript实现五星评价代码(源码下载)
2015/08/11 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
纯JavaScript代码实现文本比较工具
2016/02/17 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
Form表单按回车自动提交表单的实现方法
2016/11/18 Javascript
基于Vue如何封装分页组件
2016/12/16 Javascript
bootstrap+jQuery实现的动态进度条功能示例
2017/05/25 jQuery
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
javascript实现计算器功能
2020/03/30 Javascript
解决python2.7 查询mysql时出现中文乱码
2016/10/09 Python
python如何实现反向迭代
2018/03/20 Python
python实现最长公共子序列
2018/05/22 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
Python实现最常见加密方式详解
2019/07/13 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
Soft Cotton捷克:来自爱琴海棉花的浴袍
2017/02/01 全球购物
巴西24小时在线药房:Drogasil
2020/06/20 全球购物
介绍一下UNIX启动过程
2013/11/14 面试题
小学生检讨书大全
2014/02/06 职场文书
办公室副主任职责范本
2014/03/08 职场文书
2014年预备党员学习两会心得体会
2014/03/17 职场文书
环保守法证明
2015/06/24 职场文书
2016年党员创先争优公开承诺书
2016/03/25 职场文书
Java中使用Filter过滤器的方法
2021/06/28 Java/Android
alibaba seata服务端具体实现
2022/02/24 Java/Android
Win11 Beta 22621.601 和 22622.601今日发布 KB5017384修复内容汇总
2022/09/23 数码科技