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在浏览器中创建下载文件
Mar 05 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
May 14 Javascript
详解JavaScript UTC时间转换方法
Jan 07 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
Jun 05 Javascript
AngularJS基础 ng-mouseover 指令简单示例
Aug 02 Javascript
JS数字千分位格式化实现方法总结
Dec 16 Javascript
jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】
Mar 09 Javascript
详解vue添加删除元素的方法
Jun 30 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
Jul 19 Javascript
详解webpack2异步加载套路
Sep 14 Javascript
利用jsonp解决js读取本地json跨域的问题
Dec 11 Javascript
vue实现绑定事件的方法实例代码详解
Jun 20 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
3
2006/10/09 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
2017/06/09 PHP
JavaScipt基本教程之前言
2008/01/16 Javascript
原生js实现fadein 和 fadeout淡入淡出效果
2014/06/05 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
JavaScript采用递归算法计算阶乘实例
2015/08/04 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
详解Angular路由 ng-route和ui-router的区别
2017/05/22 Javascript
React Router v4 入坑指南(小结)
2018/04/08 Javascript
webpack+vue+express(hot)热启动调试简单配置方法
2018/09/19 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
2018/12/29 jQuery
jquery css实现流程进度条
2020/03/26 jQuery
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
详解Python中的__new__()方法的使用
2015/04/09 Python
在Python中使用zlib模块进行数据压缩的教程
2015/06/26 Python
Python中表示字符串的三种方法
2017/09/06 Python
Python实现求解括号匹配问题的方法
2018/04/17 Python
Django项目中包含多个应用时对url的配置方法
2018/05/30 Python
python多个模块py文件的数据共享实例
2019/01/11 Python
PyQt5响应回车事件的方法
2019/06/25 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
2019/08/18 Python
python 实现客户端与服务端的通信
2020/12/23 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
英国最大的在线床超市:Bed Star
2019/01/24 全球购物
超市营业员求职简历的自我评价
2013/10/17 职场文书
《找不到快乐的波斯猫》教学反思
2014/02/24 职场文书
小学生元旦感言
2014/02/26 职场文书
工厂仓管员岗位职责
2015/04/01 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
2016年圣诞节活动总结范文
2016/04/01 职场文书
Redis 配置文件重要属性的具体使用
2021/05/20 Redis
python自动化测试通过日志3分钟定位bug
2021/11/20 Python
python pygame 开发五子棋双人对弈
2022/05/02 Python