在学canvas的时候,想到可以做一个自己用来画画的简易画板,加上canvas的基础都已经学完,便尝试做了一个画板。如图

1.获取标签.

    var c=document.getElementById('myCanvas');
var ctx= c.getContext('2d');var b=document.getElementById('b');
var b1=document.getElementById('b1');
var bbb=document.getElementById('bbb');
var col=document.getElementById('col');

c为canvas画板,ctx为定义canvas需要的属性,b为铅笔的粗细,b1为橡皮擦的大小,bbb为手动设置的铅笔大小,col为调色板。

2.设置画板组件

b.onmousedown=function(){
document.onmousemove=function(){
bbb.value=b.value;
}
}
b1.onmousedown=function(){
document.onmousemove=function(){
}
} bbb.onblur=function(){
b.value=bbb.value;
}
bbb.onkeydown=function(e){
if(e.keyCode==){
b.value=bbb.value;
}
}

这几个绑定事件都是给画板组件添加的事件,例如铅笔粗细,onkeydown为手动设置铅笔粗细时可直接点击回车键确定。

3.设置铅笔

pencil.onclick=function(){
c.onmousedown=function(e){
var e=e||event;
var x= e.clientX- c.offsetLeft;
var y= e.clientY- c.offsetTop;
ctx.beginPath();
ctx.moveTo(x,y);
document.onmousemove=function(e){ var e=e||event;
var x1= e.clientX- c.offsetLeft;
var y1= e.clientY- c.offsetTop;
ctx.strokeStyle=col.value;
ctx.lineTo(x1,y1);
ctx.lineWidth=b.value;
ctx.stroke(); };
};
}

要将画的画显示在页面上,首先需要到canvas的moveto和lineto属性,然后需要将两个属性的坐标分别绑定在onmousedown事件上和onmousemove事件上,一个为鼠标按下时获取的坐标,然后移动的时候用onmousemove获取到鼠标移动时的坐标,久可以将图显示在画布上。

4.设置橡皮擦

eraser.onclick=function(){
c.onmousedown=function(e){
var e=e||event;
var x= e.clientX- c.offsetLeft;
var y= e.clientY- c.offsetTop;
ctx.beginPath();
ctx.moveTo(x,y);
document.onmousemove=function(e){
var e=e||event;
var x1= e.clientX- c.offsetLeft;
var y1= e.clientY- c.offsetTop;
ctx.strokeStyle='gray';
ctx.lineTo(x1,y1);
ctx.lineWidth=b1.value;
ctx.stroke(); };
};
}

橡皮擦其实原理和铅笔一模一样,只是将颜色换为背景色即可。

5.取消绑定

window.onmouseup=function(){

document.onmousedown=null;
document.onmousemove=null;
}

在放开鼠标时,用onmouseup事件将绑定的事件移除(js取消绑定事件用null,jquery用unbind)

6,.将图片下载

var but=document.getElementById('but');

but.onclick=function(){
var str=load(c);
document.getElementById('hre').href=str;
} function load(canvas){
var load=canvas.toDataURL("image/png");
return load;
}

todataurl是将绘制的图案转化为base64格式的编码。然后在将base64编码转化为图片,最后将base64放在a标签里的href里,即可以点击完成下载。

canvas简易画板。的更多相关文章

  1. canvas简易画板

    代码展示: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  2. Kivy 中文教程 实例入门 简易画板 (Simple Paint App):3. 随机颜色及清除按钮

    1. 随机颜色 通过前面的教程,咪博士已经带大家实现了画板的绘图功能.但是,现在画板只能画出黄色的图案,还十分单调,接下来咪博士就教大家,如何使用随机颜色,让画板变得五彩斑斓. 改进后的代码如下: f ...

  3. Kivy 中文教程 实例入门 简易画板 (Simple Paint App):2. 实现绘图功能

    1. 理解 kivy 坐标系统 上一节中,咪博士带大家实现了画板程序的基础框架,以及一个基本的自定义窗口部件(widget).在上一节的末尾,咪博士留了一道关于 kivy 坐标系统的思考题给大家.通过 ...

  4. h5-10 canvas 简易祖玛

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. html5 canvas简易版捕鱼达人游戏源码

    插件描述:html5利用canvas写的一个js版本的捕鱼,有积分统计,鱼可以全方位移动,炮会跟着鼠标移动,第一次打开需要鼠标移出背景图,再移入的时候就可以控制炮的转动,因为是用的mouseover触 ...

  6. canvas实现画板

    canvas实现画板 主要用到知识点: 鼠标事件onmousedown() onmousemove() onmouseup() onmouseleave() 事件委托 canvas的一些方法 如:绘制 ...

  7. Kivy 中文教程 实例入门 简易画板 (Simple Paint App):1. 自定义窗口部件 (widget)

    1. 框架代码 用 PyCharm 新建一个名为 SimplePaintApp 的项目,然后新建一个名为 simple_paint_app.py 的 Python 源文件, 在代码编辑器中,输入以下框 ...

  8. Kivy 中文教程 实例入门 简易画板 (Simple Paint App):0. 项目简介 & 成果展示

    本教程咪博士将带领大家学习创建自己的窗口部件 (widget).最终,我们完成的作品是一个简易的画板程序. 当用 kivy 创建应用时,我们需要仔细思考以下 3 个问题: 我们创建的应用需要处理什么数 ...

  9. 一款基于HTML5 Canvas的画板涂鸦动画

    今天给各网友分享一款基于HTML5 Canvas的画板涂鸦动画.记得之前我们分享过一款HTML5 Canvas画板工具,可以切换不同的笔刷,功能十分强大.本文今天要再来分享一款基于HTML5 Canv ...

随机推荐

  1. pymssql包安装方法

    https://docs.microsoft.com/en-us/sql/connect/python/pymssql/python-sql-driver-pymssql

  2. 程序员常用字体(vs2008字体修改方案)

    字体不仅是设计师手中重要的武器,对我们开发人员来说,字体的选择也有许多讲究,一个好的.适合展示代码的字体,应该具备以下要素: 等宽的字符 简洁.清晰并且规范的字符形状 支持ASCII码为128以上的扩 ...

  3. LevelDB源码分析-Open

    Open LevelDB的初始化主要由Open函数实现: Status DB::Open(const Options &options, const std::string &dbna ...

  4. gson格式化参数 对象转Map

    前台传json到后台接收: String  params = request.getParameters("paramtes"); Map<String, Map<St ...

  5. IntelliJ IDEA mybatis-generator的使用

    STEP 1. 在maven项目的pom.xml 添加mybatis-generator-maven-plugin 插件 pop.xml <dependency> <groupId& ...

  6. k8s Docker私有仓库认证

    使用过K8s的小伙伴肯定会遇到一个问题,我们在使用自有的Docker仓库的时候都需要先登录用户名和密码,但是如果使用K8S怎么配置密码呢?在secret中有一个类型是docker-registry我们 ...

  7. TODO:BGP 建立过程

    //TODO: Quagga 实时监控配置文件

  8. BASE64、MD5、SHA、HMAC几种加密算法

    本篇内容简要介绍BASE64.MD5.SHA.HMAC几种加密算法.    BASE64编码算法不算是真正的加密算法.    MD5.SHA.HMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加 ...

  9. Java Web解决跨域请求

    要知道跨域请求就要先了解同源策略,那么什么是同源?什么是不同源?简单来说就是,如果两个资源,包括HTML页面.JavaScript脚本.css样式,对应的协议.域名和端口完全相同,那么这两个资源就是同 ...

  10. 了解一下SQL映射文件

    1:SQL映射文件 MyBatis真正强大之处就在于SQL映射语句,相对于强大的功能,SQL映射文件的配置非常简单,与JDBC相比减少了50%的代码.下面是关于SQL映射文件的几个顶级元素配置 map ...