博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
canvas 简易像素画板
阅读量:6085 次
发布时间:2019-06-20

本文共 2772 字,大约阅读时间需要 9 分钟。

个人博客

github
download 库 下载canvas.toDataURL

大致思路

大致思路.png

自己画

自己写.png

随机

随机.png

传入 canvas对象 和 options参数(可不传) run( canvas , option )

参数

  • bgColor 背景色 默认 #e8e8e8
  • clickedColor 填充色 默认 #ff0000
  • boxSize 方块大小 默认 30
    方法
  • clean 清除所有方块
  • Random(number) 随机生成多少个方块
  • 增加鼠标点击移动绘画
实例

html

js库

function run(canvas, obj) {    obj = obj || {}    this.canvas = canvas    this.cvs = canvas.getContext("2d")    this.bgColor = obj.bgColor || "#e8e8e8"    this.clickedColor = obj.clickedColor || "#ff0000"    this.boxSize = obj.boxSize || 30    this.bgWidthLength = 0    this.bgHeightLength = 0    this.clickedArr = []    this.start()    this.click()    return this}run.prototype.start = function(){    this.bgWidthLength = parseInt( this.canvas.width / this.boxSize )    this.bgHeightLength = parseInt( this.canvas.height / this.boxSize )    this.drawBg()}run.prototype.click = function(){    let move = this.mousemove.bind(this)    this.canvas.addEventListener("mousedown",function(e){        let o = this.computedXY(e.offsetX,e.offsetY)        this.toggleClick(o)            this.canvas.addEventListener("mousemove",move )    }.bind(this))    this.canvas.addEventListener("mouseup",function(e){        this.canvas.removeEventListener("mousemove",move )    }.bind(this))}run.prototype.mousemove = function(e){    console.log(e.offsetX,e.offsetY)    let o = this.computedXY(e.offsetX,e.offsetY)    this.toggleClick(o,true)}  run.prototype.computedXY = function(x,y){    for( let i=0;i
i*this.boxSize && x < (i+1)*this.boxSize ){ x = i break; } } for( let i=0;i
i*this.boxSize && y < (i+1)*this.boxSize ){ y = i break; } } return {x,y}}run.prototype.toggleClick = function(o,draw){ let has = {} has.is = true this.clickedArr.forEach(function(item,index){ if( item.x === o.x && item.y === o.y ){ has.is = false has.index = index } }) if(has.is){ this.clickedArr.push(o) this.drawBgBox(o.x*this.boxSize,o.y*this.boxSize,true) } if(!has.is && !draw){ this.clickedArr.splice(has.index,1) this.drawBgBox( o.x*this.boxSize,o.y*this.boxSize ) }}run.prototype.Random = function(length){ for(let i=0;i

使用

let canvas = document.querySelector(".main canvas")let cvs = canvas.getContext("2d")let a = new run(canvas)let clean = document.querySelector(".clean");let random = document.querySelector(".random");let down = document.querySelector(".down");    clean.onclick = function(){        a.clean()    };    random.onclick = function(){        a.Random(100)    };    down.onclick = function(){        download(canvas.toDataURL(),'test.png','image/png')    }

转载地址:http://phkwa.baihongyu.com/

你可能感兴趣的文章
EJBCA 6 配置使用
查看>>
Nagios自定义报警时间
查看>>
有过故事的那些人
查看>>
Java中的锁详解
查看>>
Java实现单链表_使用链式存储结构
查看>>
同步之条件变量sync.Cond
查看>>
安卓四大组件之二#1-Service的创建,生命周期以及动态调用Service里的方法
查看>>
面筋:3——MySQL binlog 的日志格式
查看>>
spring3-Log4j与J2ee结合
查看>>
php中DOMDocument简单用法(XML创建、添加、删除、修改)
查看>>
【Visual C++】游戏开发笔记十六 讲解一个完整的回合制游戏demo
查看>>
我的友情链接
查看>>
汇编语言总结
查看>>
harbor的加密机制与后台修改登录密码
查看>>
Android IT资讯网络阅读器应用源码
查看>>
Java基础学习总结(23)——GUI编程
查看>>
Ruby on Rails 环境搭建
查看>>
MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合
查看>>
部署System Center App Controller 2012 Service Pack 1 (5)
查看>>
MySQL:日期函数、时间函数总结
查看>>