在学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. Python 的赋值坑 , a=b=c=1???

    原文地址:https://www.v2ex.com/amp/t/443384 Python 的赋值坑 , a=b=c=1??? 今天回答了一个主题, 一不小心进入了一个坑, 耗费了好多时间终于弄懂了我 ...

  2. [leetcode]224. Basic Calculator

    Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...

  3. [JavaScript,Java,C#,C++,Ruby,Perl,PHP,Python][转]流式接口(Fluent interface)

    原文:https://en.m.wikipedia.org/wiki/Fluent_interface(英文,完整) 转载:https://zh.wikipedia.org/wiki/流式接口(中文, ...

  4. python基础1.0

    1. python简介:解释性语言 安装python,注意路径加入path python的解释器,cpython,Python的解释器很多,但使用最广泛的还是CPython.如果要和Java或.Net ...

  5. MyBatis 配制文件层次表

  6. mysql监控执行的sql语句

    转载 https://blog.csdn.net/nzjdsds/article/details/77513869 MySQL用SQL开启general_log并设置路径 2017年08月24日 00 ...

  7. C语言语法

    1.函数指针类型定义,然后指针结构体类型定义,最后的调用形式为aaa.bbb();(aaa为结构体变量)或者 aaa->bbb();(aaa为结构体指针),函数指针最好用结构体封装起来变成指针结 ...

  8. MySQL8.0.x免安装配置

    目录 概述 下载 配置环境变量 编辑配置文件 初始化MySQL 安装MySQL系统(Windows)服务 初始化MySQL 启动MySQL 修改默认密码 开启远程登录 概述 MySQL从5.7一下子跳 ...

  9. Docker Got permission denied while trying to connect to the Docker daemon socket at unix://

    这是没有权限的原因,先将自己加入docker组,然后在重新启动就可以了, 下面参考来源:https://blog.csdn.net/weixin_40896352/article/details/80 ...

  10. 微信小程序---获取上传图片大小

    wx.chooseImage({ count: 1, sizeType: ['compressed'], sourceType: ['album', 'camera'], success: funct ...