javascript+canvas制作九宫格小程序


Posted in Javascript onDecember 28, 2014

js核心代码

/*

 *canvasid:html canvas标签id

 *imageid:html img 标签id

 *gridcountX:x轴图片分割个数

 *gridcountY:y轴图片分割个数

 *gridspace:宫格空隙

 *offsetX:x*y宫格相对canvas(0,0)X坐标偏移量

 **offsetX:x*y宫格相对canvas(0,0)Y坐标偏移量

 *isanimat:是否启用动画显示

 */

function ImageGrid(canvasid, imageid, gridcountX, gridcountY, gridspace, offsetX, offsetY, isanimat) {

    var image = new Image();

    var g = document.getElementById(canvasid).getContext("2d");

    var img=document.getElementById(imageid);

    image.src=img.getAttribute("src");

    g.drawImage(image, 0, 0);

    var imagedata = g.getImageData(0, 0, image.width, image.height);

    var grid_width = imagedata.width / gridcountX;

    var grid_height = imagedata.height / gridcountY;

    //动画

    if (isanimat) {

        var x = 0,

            y = 0;

        var inter = setInterval(function() {

            g.putImageData(imagedata, gridspace * x + offsetX, gridspace * y + offsetY, grid_width * x, grid_height * y, grid_width, grid_height);

            x < gridcountX ? x++ : x = 0;

            if (x == 0) {

                y < gridcountY ? y++ : y = 0;

            }

        }, 200);

        y == gridcountY ? clearInterval(inter) : null;

    } else { //非动画

        for (var y = 0; y < gridcountY; y++) {

            for (var x = 0; x < gridcountX; x++) {

                g.putImageData(imagedata, gridspace * x + offsetX, gridspace * y + offsetY, grid_width * x, grid_height * y, grid_width, grid_height);

            }

        }

    }

}

html代码

<canvas id="canvas1" width="900px" height="550px">Canvas demo</canvas>

 <img id="image1" style="display:none" src="//img.jbzj.com/file_images/article/201412/2014122894620636.jpg"/>

使用方法:

//eg...

ImageGrid("canvas1", "image1", 3, 3, 2, 220, 0, true); //3*3

ImageGrid("canvas1", "image1", 4, 4, 2, 440, 0, true); //4*4

ImageGrid("canvas1", "image1", 3, 4, 2, 660, 0, false); //3*4

代码很简洁,效果却非常炫酷,小伙伴们学会了吗?

Javascript 相关文章推荐
Ajax一统天下之Dojo整合篇
Mar 24 Javascript
jquery 常用操作方法
Jan 28 Javascript
js 优化次数过多的循环 考虑到性能问题
Mar 05 Javascript
jquery $.ajax相关用法分享
Mar 16 Javascript
使用apply方法处理数组的三个技巧[译]
Sep 20 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
Jun 20 Javascript
js简单实现竖向tab选项卡的方法
May 04 Javascript
纯javascript制作日历控件
Jul 17 Javascript
JS截取与分割字符串常用技巧总结
Nov 10 Javascript
js实现图片3D轮播效果
Sep 21 Javascript
JQuery中的常用事件、对象属性与使用方法分析
Dec 23 jQuery
AJAX XMLHttpRequest对象创建使用详解
Aug 20 Javascript
JavaScript设计模式之装饰者模式介绍
Dec 28 #Javascript
浅谈Javascript Base64 加密解密
Dec 28 #Javascript
JavaScript设计模式之代理模式介绍
Dec 28 #Javascript
JavaScript设计模式之外观模式介绍
Dec 28 #Javascript
JavaScript阻止事件冒泡示例分享
Dec 28 #Javascript
jQuery中removeData()方法用法实例
Dec 27 #Javascript
jQuery中data()方法用法实例
Dec 27 #Javascript
You might like
php 过滤器实现代码
2010/08/09 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
laravel通用化的CURD的实现
2019/12/13 PHP
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
字符串的replace方法应用浅析
2011/12/06 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
JavaScript中的console.assert()函数介绍
2014/12/29 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
2016/05/18 Javascript
weUI应用之JS常用信息提示弹层的封装
2016/11/21 Javascript
js图片轮播手动切换特效
2017/01/12 Javascript
vue实现element-ui对话框可拖拽功能
2018/08/17 Javascript
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
详解Python函数作用域的LEGB顺序
2016/05/14 Python
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
Python基于贪心算法解决背包问题示例
2017/11/27 Python
python批量修改图片后缀的方法(png到jpg)
2018/10/25 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
浅析Python 序列化与反序列化
2020/08/05 Python
python一些性能分析的技巧
2020/08/30 Python
用python对oracle进行简单性能测试
2020/12/05 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
css3实例教程 一款纯css3实现的环形导航菜单
2014/10/20 HTML / CSS
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
阿联酋航空丹麦官方网站:Emirates DK
2019/08/25 全球购物
委托与事件是什么关系?为什么要使用委托
2014/04/18 面试题
医院学雷锋活动策划方案
2014/02/15 职场文书
ktv周年庆活动方案
2014/08/18 职场文书
倡议书的写法
2014/08/30 职场文书
村党支部书记个人对照材料汇报
2014/10/26 职场文书
2014最新股权信托合同协议书
2014/11/18 职场文书
消防验收申请报告
2015/05/15 职场文书
借条如何写
2015/05/26 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书
python实现简单的井字棋
2021/05/26 Python