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 相关文章推荐
JavaScript:new 一个函数和直接调用函数的区别分析
Jul 10 Javascript
JS版的date函数(和PHP的date函数一样)
May 12 Javascript
Node.js 制作实时多人游戏框架
Jan 08 Javascript
jquery使用each方法遍历json格式数据实例
May 18 Javascript
JQuery核心函数是什么及使用方法介绍
May 03 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
Oct 17 Javascript
bootstrapValidator表单验证插件学习
Dec 30 Javascript
解决vue多个路由共用一个页面的问题
Mar 12 Javascript
Vue实现本地购物车功能
Dec 05 Javascript
详解微信UnionID作用
May 15 Javascript
让mocha支持ES6模块的方法实现
Jan 14 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
Apr 27 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
2006/12/13 PHP
浅析PHP echo 和 print 语句
2020/06/30 PHP
jquery 的 $(&quot;#id&quot;).html() 无内容的解决方法
2010/06/07 Javascript
javascript简单实现表格行间隔显示颜色并高亮显示
2013/11/29 Javascript
Nodejs如何搭建Web服务器
2016/03/28 NodeJs
浅谈angular懒加载的一些坑
2016/08/20 Javascript
JS产生随机数的用法小结
2016/12/10 Javascript
轻松理解Javascript变量的相关问题
2017/01/20 Javascript
VUE搭建手机商城心得和遇到的坑
2019/02/21 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
2019/08/03 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
Vue中实现回车键切换焦点的方法
2020/02/19 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
2020/09/12 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
python使用正则表达式分析网页中的图片并进行替换的方法
2015/03/26 Python
详解Python异常处理中的Finally else的功能
2017/12/29 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
Python实现PS滤镜功能之波浪特效示例
2018/01/26 Python
在Python中输入一个以空格为间隔的数组方法
2018/11/13 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
Django model.py表单设置默认值允许为空的操作
2020/05/19 Python
完美解决Django2.0中models下的ForeignKey()问题
2020/05/19 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
平面设计自荐信
2013/10/07 职场文书
小学家长会邀请函
2014/01/23 职场文书
数学国培研修感言
2014/02/13 职场文书
优秀老员工获奖感言
2014/02/15 职场文书
出生公证书样本
2014/04/04 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
Go语言使用select{}阻塞main函数介绍
2021/04/25 Golang