【JavaScript】基于H5 canvas实现的画板绘图工具(类似你画我猜)——整合颜色选取、保存图片到本地功能


本来想尝试用做一个网页版的美图秀秀,可以导入的对图片进行处理,还有制作一些模板可以快速生成人物的表情包,但是做着做着,发现太耗时间了。结果最终只是简单做了一个基于 canvas 的画板。


github地址:https://github.com/linhongbijkm/canvasPainter

在线DEMO:https://linhongbijkm.github.io/canvasPainter/cvs.html





单纯实现 canvas 绘画功能还是比较简单的,以下我只大概说一下绘画功能的实现,至于页面中还包括颜色选择器、图像保存到本地的功能,请到 github 代码仓库下载下来看看。


一、canvas 标签

这个标签定义了一个画布,然后是要用 JavaScript 来调用浏览器 API 来在画布上绘图,所以第一步,就是在页面上加入 canvas 标签;

	<body><canvas id="canvas" width="800px" height="600px"></canvas></body>


二、读取画布

跟 JS 获取其他元素一样,根据 canvas 标签定义的 id 值,用原生函数来选取 canvas 元素,然后调用 getContext('2d') 获取画布环境对象,之后对画布绘图的 API 都由环境对象来调用;

	<script>var canvas = document.getElementById('canvas');var cvs = canvas.getContext('2d');</script>


三、定义画笔的颜色和粗细

	var penWeight = 1;		//画笔粗细var penColor = '#f00';	//画笔颜色


四、监听鼠标点下时事件

鼠标一点下,就开始一次绘画,画笔的起始点是当前鼠标位置,同时设置画笔的属性;

	canvas.onmousedown = function(e){/*找到鼠标(画笔)的坐标*/var start_x = e.clientX - canvas.offsetLeft + document.body.scrollLeft;var start_y = e.clientY - canvas.offsetTop + document.body.scrollTop;cvs.beginPath();	//开始本次绘画cvs.moveTo(start_x, start_y);	//画笔起始点/*设置画笔属性*/cvs.lineCap = 'round';cvs.lineJoin ="round";cvs.strokeStyle = penColor;		//画笔颜色cvs.lineWidth = penWeight;		//画笔粗细/*监听鼠标移动事件*//*监听鼠标松开事件*/}


五、监听鼠标移动和松开事件

为了节省性能,在鼠标松开时候,取消鼠标按住和移动的监听,也就是只有鼠标按下时才监听鼠标移动和松开事件;

	canvas.onmousemove = function(e){/*找到鼠标(画笔)的坐标*/var move_x = e.clientX - canvas.offsetLeft + document.body.scrollLeft;var move_y = e.clientY - canvas.offsetTop + document.body.scrollTop;cvs.lineTo(move_x, move_y);	//根据鼠标路径绘画cvs.stroke();	//立即渲染}canvas.onmouseup = function(e){cvs.closePath();	//结束本次绘画canvas.onmousemove = null;canvas.onmouseup = null;}





整合以上五点,单纯绘图功能的代码如下:

(注:不包含颜色选取、橡皮擦、清空画布功能。如果需要完整版,请到github下载,地址在本文最前面)


<body><canvas id="canvas" width="800px" height="600px"></canvas>
</body><script>var canvas = document.getElementById('canvas');var cvs = canvas.getContext('2d');var penWeight = 1;		//画笔粗细var penColor = '#f00';	//画笔颜色canvas.onmousedown = function(e){/*找到鼠标(画笔)的坐标*/var start_x = e.clientX - canvas.offsetLeft + document.body.scrollLeft;var start_y = e.clientY - canvas.offsetTop + document.body.scrollTop;cvs.beginPath();	//开始本次绘画cvs.moveTo(start_x, start_y);	//画笔起始点/*设置画笔属性*/cvs.lineCap = 'round';cvs.lineJoin ="round";cvs.strokeStyle = penColor;		//画笔颜色cvs.lineWidth = penWeight;		//画笔粗细canvas.onmousemove = function(e){/*找到鼠标(画笔)的坐标*/var move_x = e.clientX - canvas.offsetLeft + document.body.scrollLeft;var move_y = e.clientY - canvas.offsetTop + document.body.scrollTop;cvs.lineTo(move_x, move_y);		//根据鼠标路径绘画cvs.stroke();	//立即渲染}canvas.onmouseup = function(e){cvs.closePath();	//结束本次绘画canvas.onmousemove = null;canvas.onmouseup = null;}}
</script>


运行一下代码看看,比完整版简陋很多:








本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/61021.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最近很火的Ai绘图web网页源码

最近AI绘图挺火的分享个绘图接口的网页源码吧 源码使用教程&#xff1a; 1.打开api.php,第四行,填写key,key获取地址&#xff1a;https://jhapi.rjk66.cn/user/key 2.此ai绘图接口需要专业版会员才能调用成功 3&#xff0c;专业版会员开通地址https://jhapi.rjk66.cn/user/…

短视频社区的商业化和流量分发

商业化本质上是一门流量生意&#xff0c;那么为什么要做流量&#xff1f; 1、流量分配影响社区生态 一个社区的总流量是要在三类流量里面做分配&#xff0c;此消彼长&#xff1a; 私域流量公域流量&#xff08;中心化运营 算法推荐&#xff09;商业化的流量&#xff08;也是…

Android 短视频 SDK 转场特效的音视频同步分析

在短视频的应用场景中&#xff0c;经常存在用户拍摄的两个或者多个视频生成一个视频的需求&#xff0c;为了达到两个视频平滑过渡&#xff0c;就需要在两个视频中间添加转场效果。 由于导入视频的帧率、码率等参数都不一致&#xff0c;如何保证在添加完转场效果后音视频同步&am…

GitHub怎样快速更换绑定邮箱(简单实用)

1、登录GitHub 2、点开自己的头像 3、点Settings 4、点击Emails 5、Add email address&#xff0c; 填入你想用的新邮箱 6、新邮箱收到验证邮件 &#xff0c;验证之后&#xff0c;回到github &#xff0c;把新邮箱Set Primary

修改Git上的用户名和邮箱

1、打开GitBash 2、输入可以看到自己的邮箱和用户名 git config --list 3、使用这行命令修改你的邮箱 git config --global --replace-all user.email “你的邮箱” 4、使用这行命令修改你的用户名 git config --global --replace-all user.name “你的用户名”

分享一个可以批量换绑百度账号绑定邮箱+批量修改密码的软件

之前做过贴吧&#xff0c;经常需要入手大量的百度号&#xff0c;因此给账号换绑邮箱&#xff08;防止扫号&#xff09;、修改密码就成了一件繁重的工作。也曾经因为偷懒&#xff0c;购买之后没有及时换绑邮箱&#xff0c;很快就被不良卖家把号扫回去了&#xff0c;损失惨重&…

修改git全部已提交的用户名和邮箱

原文的link&#xff1a;http://dangzhiqiang.blog.51cto.com/7961271/1657864 即&#xff1a;修改git所有commit中的用户名和email 作为一名 Git 苦手&#xff0c;我一直使用的是傻瓜级的 Github 客户端&#xff0c;去年九月迁移到 OS X 后也是如此。好几个月后我发现自己的 co…

怎样修改git用户名、密码和邮箱?

如何查看git用户名&#xff1f; 命令如下&#xff1a; git config user.name 如何查看git密码&#xff1f; 命令如下&#xff1a; git config user.password 如何查看git邮箱地址&#xff1f; 命令如下&#xff1a; git config user.email 如何修改git用户名&#xff1f;…

git设置查看修改用户名和邮箱

1.设置 修改用户名 git config --global user.name "xxxx(新的用户名)" 修改密码 git config --global user.password "xxxx(新的密码)" 修改邮箱 git config --global user.email "xxxxxxx.com(新的邮箱)" 2.查看 1&#xff09;通过命令查…

Gerrit(1)绑定自己的邮箱账号

前提条件&#xff1a;安装Git 1、根据公司自己的gerrit地址&#xff0c;配置ssh-key 配置个人信息&#xff0c;登记邮箱地址&#xff1a; 然后系统会发送一封确认邮件&#xff0c;请点击确认&#xff1a; 配置ssh-key&#xff1a; 公钥生成步骤 &#xff1a;(前提条件已安装g…

修改 Git 已经提交记录的 用户名 和邮箱

修改 Git 已经提交记录的 用户名 和邮箱 有关 Git 和版本控制的常见问题。 如何更改提交的作者姓名/电子邮件&#xff1f; 在我们进入解决方案之前&#xff0c;让我们找出您到底想要完成什么&#xff1a; 在提交之前更改作者信息在提交后更改作者信息&#xff08;即历史提交…

修改git全局用户名,邮箱和密码

首先 打开idea的Terminal&#xff0c;输入命令查看当前git的全局用户名git config user.name 然后输入git config --global user.name "用户名" 然后输入第一个命令git config user.name&#xff0c;查看是否设置成功 到此修改成功。 邮箱查询&#xff1a;git confi…

chatgpt赋能python:Python自动化处理表格

Python自动化处理表格 随着大数据的时代来临&#xff0c;数据处理已经成为各种企业必备的基础工具。选择一个适合的工具可以极大提升工作效率和数据处理的水平。Python作为一种既实用又易用的编程语言&#xff0c;具有广泛的应用领域&#xff0c;包括数据处理。在这篇文章中&a…

ChatExcel--自动处理表格

文章目录 一、简介1.项目背景2.有点超越ChatGPT&#xff1f;3.功能特点4.ChatExcel入口5.操作系数 二、页面分析三、浅入测试1.模拟表格内容2.上传文件3.测试降序4.条件筛选 四、输入案例五、深入测试六、AI工具背景 一、简介 先行者–本文仅介绍ChatExcel基本用法和测试用例。…

腾讯、飞书等在线表格自动化编辑--python

编辑在线表格 一 目的二 实现效果三 实现过程简介1、本地操作表格之后进入导入在线文档2、直接操作在线文档 四 实现步骤讲解1、实现方法的选择2、导入类库3、设置浏览器代理直接操作已打开浏览器4、在线文档登录5、在线文档表格数据操作6、行数不够自动添加行数 五 代码实现小…

自动化电子表格处理

使用java来操作excel需要用到一个开源工具&#xff0c;Apache下的poi相关jar包。让我们可以很轻松的方便的操作excel文件。 首先&#xff0c;到官网把poi下载下来。官网地址 下载完成后&#xff0c;进行解压。把所有jar包导入到项目工程当中。 上面准备工作完成&#x…

提升10倍写作效率,这5个写作工具,文笔不好的人别错过

记得刚出来上班的时候&#xff0c;我的写作效率很低&#xff0c;经常没有思路&#xff0c;也找不到选题。甚至一两个小时过去了&#xff0c;仍然不知道如何动笔&#xff0c;经常写了删&#xff0c;删了又写。工欲善其事&#xff0c;必先利其器。在写作过程中&#xff0c;需要一…

黑马学生入职B站1年,晒出21K月薪:我想跳槽华为

前两天&#xff0c;黑马发布了《2022年度互联网平均薪资出炉&#xff01;高到离谱&#xff01;》&#xff0c;信息传输、软件和信息技术服务业薪资遥遥领先&#xff01;Z时代举头望着天花板&#xff0c;故作潇洒&#xff1a;钱真的不重要。低头却想着搞钱大计&#xff1a;拖后腿…

黑马学生入职B站1年,晒出21K月薪:我想跳槽华为!

哈喽大家好&#xff0c;人见人爱&#xff0c;花见花开的播妞又来了&#xff01;&#xff01;&#xff01; 现在的Z时代&#xff0c;嘴上说着不要&#xff0c;身体却很诚实。 前两天&#xff0c;黑马发布了《2022年度互联网平均薪资出炉&#xff01;高到离谱&#xff01;》&…

会玩!女网红化身AI,同时交往1000个男友,或年入4亿!

省时查报告-专业、及时、全面的行研报告库 省时查方案-专业、及时、全面的营销策划方案库 【免费下载】2023年3月份热门报告合集 无需翻墙&#xff0c;ChatGPT直接使用 万字干货&#xff1a;ChatGPT的工作原理 2023年创业&#xff08;有创业想法&#xff09;必读手册 ChatGPT等…