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 相关文章推荐
ExtJS GridPanel 根据条件改变字体颜色
Mar 08 Javascript
jquery搜索框效果实现方法
Jan 16 Javascript
JavaScript使用Math.Min返回两个数中较小数的方法
Apr 06 Javascript
jQuery遮罩层实现方法实例详解(附遮罩层插件)
Dec 08 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
Oct 14 Javascript
AngularJS中一般函数参数传递用法分析
Nov 22 Javascript
JQuery和PHP结合实现动态进度条上传显示
Nov 23 Javascript
JS插件plupload.js实现多图上传并显示进度条
Nov 29 Javascript
轻松学习Javascript闭包
Mar 01 Javascript
JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
Sep 23 jQuery
VUE长按事件需求详解
Oct 18 Javascript
vue router-link传参以及参数的使用实例
Nov 10 Javascript
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
《Re:从零开始的异世界生活 冰结之绊》
2020/04/09 日漫
PHP中替换键名的简易方法示例详解
2014/01/07 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
简单PHP会话(session)说明介绍
2016/08/21 PHP
PHP实现ASCII码与字符串相互转换的方法
2017/04/29 PHP
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
javascript preload&amp;lazy load
2010/05/13 Javascript
ASP.NET中AJAX 调用实例代码
2012/05/03 Javascript
js如何调用qq互联api实现第三方登录
2014/03/28 Javascript
JavaScript作用域链示例分享
2014/05/27 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
javascript的 {} 语句块详解
2016/02/27 Javascript
javascript中call apply 与 bind方法详解
2016/03/10 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
Servlet实现文件上传,可多文件上传示例
2016/12/05 Javascript
Node.js的特点详解
2017/02/03 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
如何在Angular应用中创建包含组件方法示例
2019/03/23 Javascript
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
在Python中pandas.DataFrame重置索引名称的实例
2018/11/06 Python
python爬取网易云音乐评论
2018/11/16 Python
使用python检查yaml配置文件是否符合要求
2020/04/09 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
html5-canvas中使用clip抠出一个区域的示例代码
2018/05/25 HTML / CSS
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
AJAX都有哪些有点和缺点
2012/11/03 面试题
行政人员工作职责
2013/12/05 职场文书
党风廉政建设责任书
2014/04/14 职场文书
主题团日活动总结
2014/06/25 职场文书
学生上课说话检讨书
2014/10/25 职场文书
2014年教研员工作总结
2014/12/23 职场文书
借款民事起诉状范文
2015/05/19 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书
python自动化调用百度api解决验证码
2021/04/13 Python