JavaScript html5 canvas画布中删除一个块区域的方法


Posted in Javascript onJanuary 26, 2016

本文实例讲述了html5 canvas画布中删除一个块区域的方法。分享给大家供大家参考,具体如下:

运行效果截图如下:

JavaScript html5 canvas画布中删除一个块区域的方法

附:图中,黑色小方块即为删除掉的块区域

具体代码如下:

index.html:

<!DOCTYPE html>
<html>
 <head>
  <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
  <title>canvas中删除一块区域</title>
  <style type="text/css">
   #canvas {
    background:black; margin-top:100px; margin-left:200px;
   }
  </style>
 </head>
 <body>
  <canvas id="canvas" width="500px" height="500px" ></canvas>
 </body>
 <script type="text/javascript" src="canvas.js"></script>
 <script type="text/javascript">
  cache = {};
  var offsetX = 50,
   offsetY = 20;
  cache.context = dyl.createContext('canvas');
  dyl.rect(dyl.createColor(), 150, 150, 200, 200, 0.5);
  for(var i=0; i<10; i++) {
   dyl.clearRect(150 + i*20, 150 + i*20, 20, 20);
  }
 </script>
</html>

canvas.js:

(function() {
  var dyl = {cache: {}};
  dyl.setContext = function(context) {
    dyl.cache._context = context;
    return context;
  };
  dyl.getDom = function(id) {
    return document.getElementById(id);
  };
  dyl._getContext = function() {
    return dyl.cache._context;
  };
  dyl.save = function() {
    var context = dyl._getContext();
    context ? context.save() : void(0);
  };
  dyl.restore = function() {
    var context = dyl._getContext();
    context ? context.restore() : void(0);
  };
  dyl.createContext = function(canvasID) {
    var canvas = this.getDom(canvasID);
    if(!canvas) {
      return null;
    }
    return dyl.setContext(canvas.getContext("2d"));
  };
  dyl.createColor = function() {
    var color = "rgb(";
    color += Math.round(Math.random()*255);
    color += ",";
    color += Math.round(Math.random()*255);
    color += ",";
    color += Math.round(Math.random()*255);
    color += ")";
    return color;
  };
  dyl.addImg = function(img, x, y) {
    var context = dyl._getContext();
    if(!img || !context) {
      return;
    }
    if(typeof img === "string") {
      var oImg = new Image();
      oImg.src = img;
      oImg.onload = function() {
        context.drawImage(oImg, x, y);
      }
      return;
    } 
    context.drawImage(img, x, y);
  };
  dyl.rect = function(color, x, y, width, height, alpha) {
    var context = dyl._getContext();
    if(!context) {
      return;
    }
    context.save();
    context.fillStyle = color;
    context.globalAlpha = alpha ? alpha : 1;
    context.fillRect(x, y, width, height);
    context.restore();
  };
  dyl.circle = function(color, x, y, r, alpha) {
    var context = dyl._getContext();
    context.save();
    context.fillStyle = color;
    context.beginPath();
    context.globalAlpha = alpha ? alpha : 1;
    context.arc(x, y, r, 0, 2*Math.PI);
    context.fill();
    context.stroke();
  };
  dyl.clearRect = function(x, y, width, height) {
    var context = dyl._getContext();
    if(!context) {
      return;
    }
    context.clearRect(x, y, width, height);
  };
  dyl.scale = function(x, y) {
    var context = dyl._getContext();
    if(!context) {
      return;
    }
    x = x ? x : 1;
    y = y ? y : 1;
    context.scale(x, y);
  };
  if(!window.dyl) {
    window.dyl = dyl;
  }
})();

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

Javascript 相关文章推荐
取得传值的函数
Oct 27 Javascript
jquery下实现overlay遮罩层代码
Aug 25 Javascript
IE下js调试工具Companion.JS
Oct 15 Javascript
javascript跨域的4种方法和原理详解
Apr 08 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
Mar 05 Javascript
jQuery横向擦除焦点图特效代码分享
Sep 06 Javascript
原生js和jquery分别实现横向导航菜单效果
May 13 Javascript
Bootstrap组合上、下拉框简单实现代码
Mar 06 Javascript
用Node提供静态文件服务的方法
Jul 06 Javascript
详解JavaScript函数callee、call、apply的区别
Mar 08 Javascript
layui下拉框获取下拉值(select)的例子
Sep 10 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
Sep 21 jQuery
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
Jan 26 #Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
Jan 26 #Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
Jan 26 #Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
Jan 26 #Javascript
JavaScript+html5 canvas绘制渐变区域完整实例
Jan 26 #Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
Jan 26 #Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
Jan 26 #Javascript
You might like
PHP实现时间日期友好显示实现代码
2019/09/08 PHP
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
2015/09/20 Javascript
javascript 实现动态侧边栏实例详解
2016/11/11 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
jQuery鼠标移动图片上实现放大效果
2017/06/25 jQuery
React Native时间转换格式工具类分享
2017/10/24 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
2018/04/12 Javascript
vue检测对象和数组的变化分析
2018/06/30 Javascript
@angular前端项目代码优化之构建Api Tree的方法
2018/12/24 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
微信小程序如何实现精确的日期时间选择器
2020/01/21 Javascript
基于javascript canvas实现五子棋游戏
2020/07/08 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
[04:04]显微镜下的DOTA2第六期——电影级别的华丽团战
2014/06/20 DOTA
[06:35]2014DOTA2国际邀请赛 老男孩梦圆西雅图中国军团世界最强
2014/07/22 DOTA
使用python实现扫描端口示例
2014/03/29 Python
python使用BeautifulSoup分页网页中超链接的方法
2015/04/04 Python
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
python写入中英文字符串到文件的方法
2015/05/06 Python
python使用正则表达式的search()函数实现指定位置搜索功能
2017/11/10 Python
Python @property使用方法解析
2019/09/17 Python
如何使用python实现模拟鼠标点击
2020/01/06 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
Stefania Mode美国:奢华设计师和时尚服装
2018/01/07 全球购物
为什么group by 和order by会使查询变慢
2014/05/16 面试题
市场营销方案范文
2014/03/11 职场文书
春节晚会主持词
2014/03/24 职场文书
酒店开业策划方案
2014/06/02 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
走进科学观后感
2015/06/18 职场文书
2017元旦晚会开幕词
2016/03/03 职场文书
公司与个人合作协议书
2016/03/19 职场文书