js绘制圆形和矩形的方法


Posted in Javascript onAugust 05, 2015

本文实例讲述了js绘制圆形和矩形的方法。分享给大家供大家参考。具体如下:

这里使用js来绘制圆形和矩形,支持选择图形的背景颜色,同时可设置圆角矩形、半径、正圆、矩形、正方形这几个选项。或许这些图形你不需要,但重要的是让你学会JavaScript绘制图形的方法,这是要表达的核心。

运行效果如下图所示:

js绘制圆形和矩形的方法

具体代码如下:

<!doctype html>
<html>
<head>
<title>js来绘制圆形和矩形</title>
<style>
 *{margin:0; padding:0;}
 #div{position:absolute; background:#ccc;}
 .sel{ margin:30px auto; width:960px; overflow:hidden}
 li{ list-style:none; float:left; width:60px; height:20px;}
 #colors{ width:500px; float:left}
 .selColor{ float:left}
 #radius{ width:40px; height:20px;}
 .red{background:red;}
 .yellow{background:yellow;}
 .blue{background:blue;}
 .pink{background:pink;}
 .black{background:black;}
 .orange{background:orange;}
 .green{ background:green;}
 .xz{ width:340px; float:right;}
 #canvas{ width:960px; height:500px; border:1px solid #ccc; margin:0 auto}
</style>
<script>
function $Id(id)
{
 return document.getElementById(id); 
}
window.onload=function(){
 var oCanvas=$Id('canvas');
 var oRoud=$Id('roud');
 var oRadius=$Id('radius');
 var oCir=$Id('circle');
 var oSqu=$Id('squ');
 var oColors=$Id('colors');
 var aColors=oColors.getElementsByTagName('li');
 var color='red';
 var aInputs=document.getElementsByTagName('input');
 var xz='roud';
 var arr=[];
 for(var i=0;i<aInputs.length;i++)
 {
  if(aInputs[i].type=='checkbox')
  {
   arr.push(aInputs[i]); 
  }
 }
 for(var i=0;i<arr.length;i++)
 {
  arr[i].onclick=function()
  {
   if(!this.checked)
   {
    this.checked=false; 
   }
   else
   {
    for(var j=0;j<arr.length;j++)
    {
     arr[j].checked=false; 
    }
    this.checked=true; 
    xz=this.value;
   }
  } 
 }
 //选择颜色
 for(var i=0;i<aColors.length;i++)
 {
  aColors[i].onclick=function()
  {
   color=this.className; 
  } 
 }
 oCanvas.onmousedown=function(ev)
 {
   if(oCanvas.setCapture)
   {
    oCanvas.setCapture();
   }
   for(var i=0;i<arr.length;i++)
   {
    if(arr[i].checked)
    {
     arr[i].checked=true;
     xz= arr[i].value;
    } 
   }
   var oEv=ev||window.event;
   var disX=oEv.clientX;
   var disY=oEv.clientY;
   var oR=document.createElement('div');
   oR.id="div";
   oR.style.top=disY+'px';
   oR.style.left=disX+'px';
   oR.style.backgroundColor=color;
   document.body.appendChild(oR);
  document.onmousemove=function(ev)
  {
   var oEv=ev||window.event;
   var x=oEv.clientX;
   var y=oEv.clientY;
   if(x<oCanvas.offsetLeft)
   {
    x=oCanvas.offsetLeft; 
   }
   else if(x>oCanvas.offsetLeft+oCanvas.offsetWidth)
   {
    x=oCanvas.offsetLeft+oCanvas.offsetWidth
   }
   if(y<oCanvas.offsetTop)
   {
    y=oCanvas.offsetTop; 
   }
   else if(y>oCanvas.offsetTop+oCanvas.offsetHeight)
   {
    y=oCanvas.offsetTop+oCanvas.offsetHeight
   }
   oR.style.width=Math.abs(x-disX)+'px';
   oR.style.top=Math.min(disY,y)+'px';
   oR.style.left=Math.min(disX,x)+'px';
   switch(xz)
   {
    case 'roud':
     oR.style.height=Math.abs(y-disY)+'px';
     oR.style.borderRadius=oRadius.value+'px';
     break; 
    case 'circle':
     oR.style.height=Math.min(Math.abs(x-disX),Math.abs(y-disY))+'px';
     oR.style.width=Math.min(Math.abs(x-disX),Math.abs(y-disY))+'px';
     oR.style.borderRadius=(Math.min(Math.abs(x-disX),Math.abs(y-disY)))/2+'px';
     break;
    case 'squ':
     oR.style.height=Math.abs(y-disY)+'px';
     break;
    case 'square':
     oR.style.height=Math.min(Math.abs(x-disX),Math.abs(y-disY))+'px';
     oR.style.width=Math.min(Math.abs(x-disX),Math.abs(y-disY))+'px';
   }
  }
  document.onmouseup=function()
  {
   document.onmousemove=null;
   document.onmouseout=null;
   if(oCanvas.releaseCapture)
   {
    oCanvas.releaseCapture();
   } 
  }
  return false;
 }
}
</script>
</head>
<body>
 <div class="sel">
  <span class="selColor">请选择一种颜色</span>
 <ul id="colors">
  <li value="red" class="red"></li>
  <li value="yellow" class="yellow"></li>
  <li value="blue" class="blue"></li>
  <li value="pink" class="pink"></li>
  <li value="black" class="black"></li>
  <li value="orange" class="orange"></li>
  <li value="green" class="green"></li>
 </ul>
 <p class="xz">
  <input type="checkbox" value="roud" id="roud" />圆角矩形
  <label>半径</label><input type="text" value="" id="radius" />
  <input type="checkbox" id="circle" value="circle" />正圆
  <input type="checkbox" id="squ" value="squ" />矩形
  <input type="checkbox" id="square" value="square" />正方形
  </p>
 </div>
 <div id="canvas">
 </div>
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
jQuery 关于伪类选择符的使用说明
Apr 24 Javascript
javascript实现简单的html5视频播放器
May 06 Javascript
JS实现的5级联动Select下拉选择框实例
Aug 17 Javascript
js无法获取到html标签的属性的解决方法
Jul 26 Javascript
JS获取及验证开始结束日期的方法
Aug 20 Javascript
微信小程序授权获取用户详细信息openid的实例详解
Sep 20 Javascript
浅谈React组件之性能优化
Mar 02 Javascript
JS对象与json字符串相互转换实现方法示例
Jun 14 Javascript
React项目动态设置title标题的方法示例
Sep 26 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
Jan 30 Javascript
详解写好JS条件语句的5条守则
Feb 28 Javascript
JavaScript实现自动消除按钮功能的方法
Aug 05 #Javascript
JS版元素周期表实现方法
Aug 05 #Javascript
javascript实现手机震动API代码
Aug 05 #Javascript
JS实现生成会变大变小的圆环实例
Aug 05 #Javascript
JavaScript计算某一天是星期几的方法
Aug 05 #Javascript
JavaScript实现节点的删除与序号重建实例
Aug 05 #Javascript
javascript禁止访客复制网页内容的实现代码
Aug 05 #Javascript
You might like
php格式化工具Beautify PHP小小BUG
2008/04/24 PHP
php图片加中文水印实现代码分享
2012/10/31 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
基于flush()不能按顺序输出时的解决办法
2013/06/29 PHP
php5.3以后的版本连接sqlserver2000的方法
2014/07/28 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
javascript 函数调用规则
2009/08/26 Javascript
JavaScript为对象原型prototype添加属性的两种方式
2010/08/01 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
浅谈时钟的生成(js手写简洁代码)
2016/08/20 Javascript
Easy UI动态树点击文字实现展开关闭功能
2017/09/30 Javascript
微信小程序排坑指南详解
2018/05/23 Javascript
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
[01:32]DOTA2次级联赛——首支职业女子战队选拔赛全记录
2014/10/23 DOTA
Python标准库之随机数 (math包、random包)介绍
2014/11/25 Python
python实现折半查找和归并排序算法
2017/04/14 Python
Python实现购物系统(示例讲解)
2017/09/13 Python
详解K-means算法在Python中的实现
2017/12/05 Python
PyQt5每天必学之工具提示功能
2018/04/19 Python
python多线程同步实例教程
2019/08/11 Python
Python中Flask-RESTful编写API接口(小白入门)
2019/12/11 Python
python的列表List求均值和中位数实例
2020/03/03 Python
Python-split()函数实例用法讲解
2020/12/18 Python
美国男女折扣服饰百货连锁店:Stein Mart
2017/05/02 全球购物
预订从美国飞往印度的机票:MyTicketsToIndia
2017/05/19 全球购物
劳动工资科岗位职责范本
2014/03/02 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
信用卡工资证明格式
2014/09/13 职场文书
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
先进教师个人事迹材料
2014/12/15 职场文书
经营目标责任书
2015/05/08 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
关于教师节的广播稿
2015/08/19 职场文书
Java详细解析==和equals的区别
2022/04/07 Java/Android