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 相关文章推荐
jqeury eval将字符串转换json的方法
Jan 20 Javascript
js 判断checkbox是否选中的操作方法
Nov 09 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
Apr 26 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
Jun 19 Javascript
了不起的node.js读书笔记之例程分析
Dec 22 Javascript
js用拖动滑块来控制图片大小的方法
Feb 27 Javascript
详解JS中的this、apply、call、bind(经典面试题)
Sep 19 Javascript
Vue全家桶实践项目总结(推荐)
Nov 04 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
Sep 28 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
Mar 28 jQuery
ES6入门教程之变量的解构赋值详解
Apr 13 Javascript
javascript Number 与 Math对象的介绍
Nov 17 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从身份证获取性别和出生年月
2017/02/09 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
JS中style属性
2006/10/11 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
js实现在文本框光标处添加字符的方法介绍
2012/11/24 Javascript
详解JavaScript中void语句的使用
2015/06/04 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
vue.js实现表格合并示例代码
2016/11/30 Javascript
JavaScript中捕获与冒泡详解及实例
2017/02/03 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
简单实现jQuery轮播效果
2017/08/18 jQuery
Node.JS使用Sequelize操作MySQL的示例代码
2017/10/09 Javascript
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
详谈commonjs模块与es6模块的区别
2017/10/18 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
微信小程序多音频播放进度条问题
2018/08/28 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
基于vue实现探探滑动组件功能
2020/05/29 Javascript
mapboxgl实现带箭头轨迹线的代码
2021/01/04 Javascript
简单介绍Python中的JSON使用
2015/04/28 Python
Python实现的异步代理爬虫及代理池
2017/03/17 Python
pytorch 模型可视化的例子
2019/08/17 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
服装行业创业计划书范文
2014/02/05 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
致地震灾区的慰问信
2015/03/23 职场文书
小学运动会加油稿
2015/07/22 职场文书
小学教代会开幕词
2016/03/04 职场文书
多人股份制合作协议书
2016/03/19 职场文书
2016年小学六一儿童节活动总结
2016/04/06 职场文书
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS