canvas实现涂鸦效果--清屏和保存功能

Android小程序-涂鸦板 最近android课老师布置了一个课后作业,是实现android涂鸦板的功能, 然后自己写了一个简单的涂鸦板,可以实现选择颜色、尺寸、清屏的功能。 首先是效果图: 主要是使用Canvas和Paint来实现画图,并使用触屏事件处理来获取用户滑动的坐标。 首先,新建一个类HandWrite并继承View 实现画图的主要方法是onDraw()方法。 onDraw():绘图主函数,但是 阅读详情

利用canvas实现涂鸦效果,包括更换笔触大小颜色、换背景图、橡皮檫、历史记录、清屏等功能,并能保存涂鸦图片到本地。

由于篇幅问题,本文主要实现清屏和保存功能,最终效果如下图。

Tips:本文是在《 canvas实现涂鸦效果--基本涂鸦效果》和《canvas实现涂鸦效果--大小颜色背景图》基础上添加功能。

清屏功能

清屏功能比较简单,不需要增加html代码和css样式,只需要增加如下图js代码;原理就是点击清屏按钮(clearButton)时候,清除(clearRect)掉涂鸦画布(ctx)和背景图画布(offCtx)的内容。

保存功能

编写静态样式,只需要增加如下图一行html代码,主要是用于保存涂鸦画布和背景图画布的图片,后面合成于离屏画布。

声明变量和初始化数据,详细代码如下图,基于前面功能声明修改了红色框的数据:

imgSrc设置背景图片地址,也用于判断是否有背景图;

imgArray存储背景图和涂鸦图,用于循环添加到元素img。

分析实现保存功能之前,先需要了解函数saveFile(saveFile),因为canvas没办法直接保存为图片,所以下面的代码利用了模拟鼠标点击事件进行保存,且能自定义文件名。

保存功能实现过程,简单说就是把涂鸦画布和背景图画布的内容合成到另一个画布,然后把该画布内容保存成图片到本地,详细分析如下(点击保存按钮(saveButton)时候):

首先把涂鸦画布和背景图画布的内容转换成图片存储到数组imgArray;

然后把imgArray传值给函数compositeGraph,该函数首先把数组imgArray内容循环转化成html中元素img的内容(该内容是隐藏的),然后循环该元素img轮流绘画到离屏画布上面,最后把该离屏画布转化成图片并利用函数saveFile保存成图片到本地。

注意:

图片需要使用onload(val.onload),不然图片未准备就执行,会显示空白;

转换离屏画布为图片和执行函数saveFile需要使用定时器,不然也会导致保存空白图片。

注意事项

toDataURL有跨域问题,所以需要发布到服务器上,才能正常使用。

QML Canvas 保存画布内容 不知大家想过没有,我们好不容易在 Canvas 上绘制了各种图形,该如何把它保存起来呢?比如,我们实现了一个画板,当用户制作完成自己的作品之后,是不是要将其保存起来,以分享给他人或者供自己后续再次编辑。 阅读详情

相关推荐

打造移动端Canvas涂鸦应用:从基础到高级功能

Canvas是HTML5中引入的新的绘图元素,通过JavaScript中的Canvas API可以绘制图形、动画以及游戏。它是一个通过HTML标签定义的矩形区域,你可以在这个区域中绘制任何内容。

weixin_31459297的博客 850

HTML5简易涂鸦板制作

运行效果 代码中主要要学会阅读英文单词,务必认真学习English代码清单1<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script> var startX,startY; var flag = false;

MacBill的专栏 2359

如何在R中高效安装ropls及其依赖包

本文详细介绍了在R语言中高效安装ropls包及其依赖的完整流程。作为Bioconductor生物信息学分析包,ropls的安装需通过BiocManager管理器进行。文章提供了标准安装步骤、跨系统避坑指南及安装后验证方法,帮助用户解决R版本、编译环境和网络镜像等常见问题,确保代谢组学数据分析工具顺利部署。

efc123456的博客 908

Canvas绘图状态的保存和恢复(十)

首先,什么是状态,画布上的路径和位图并不属于状态,应该把状态看做2D渲染上下文属性的描述;是不是很难理解!!! 那就别理解了,看以下的例子你能基本理解这个意思!!! 1、保存绘图状态函数   context.save(); 保存当前画布状态 代码使用:   context.fillStyle = "#123123"; context.save();//保持画布状态 context.fi...

搜索微信公众号(airX嵌入式)获取更多知识 3149

域控制器迁移后NETLOGON共享丢失的修复指南

本文详细解析了在Windows域控制器迁移后NETLOGON共享丢失的故障现象与修复方法。通过使用Dcdiag工具诊断,定位注册表键值SysVolReady异常及SCRIPTS目录缺失等核心原因,并提供了修改注册表、创建目录、重启Netlogon服务等逐步修复指南,帮助管理员快速恢复域用户登录功能,确保业务连续性。

weixin_29245767的博客 88

告别jom Error 2:深入理解QtCreator、CMake与MSVC工具链的协作机制

本文深入解析QtCreator构建过程中常见的jom Error 2问题,揭示CMake与MSVC工具链的协作机制。从CMake生成器的工作原理到MSVC工具链的组件协作,帮助开发者系统化诊断构建错误,提升开发效率。

weixin_30654419的博客 430

图片涂鸦html插件,HTML5 canvas 在线涂鸦

插件地址采用技术jq-signature.min.jsDeveloped using jQuery 2.1.4.Insert title here$(function(){$('.js-signature').jqSignature();})function clearCanvas() {$('#signature').html('Your signature will appear here w...

weixin_42515014的博客 650

避免bank conflict的使用共享内存的矩阵转置。及其循环展开。转置前后都是行主序,中间共享内存中是列主序

为了避免bank conflict,可以使用padding的方式将数组中的每一行各自占据一个bank,这样每个线程读取不同行的数据时就不会发生bank conflict。padding的方式是在每行数据后面添加一定数量的空数据,使得每行的字节数恰好是bank的整数倍,这样就能保证每行数据各自占据一个bank。具体来说,当一个线程访问共享内存中的一个元素时,GPU会根据该元素在共享内存中的地址计算出其所在的bank,然后将该元素从该bank中读取出来。

weixin_55035144的博客 2144

图片涂鸦html插件,JS 网页截图、涂鸦

最近因为产品需要,用js写了一个能网页截图并涂鸦的js库(类似QQ 截图工具)。这个库与html2canvas 等类似的库有巨大的差异:html2canvas 只能做到截取“网页”的部分元素类型,而网页之外的内容(浏览器窗口之外),或者跨域的iframe,java applet 等元素是无法截取的。而我们的需求是要能截取桌面上的任何东西,不限窗口和元素类型,换言之:要做一个类似“QQ 截图工具“的...

weixin_35440082的博客 1474

数据驱动AI落地:从业务价值到技术实践的全链路方法论

以数据驱动为核心,围绕 AI 落地全链路展开:先建全域数据体系(拉通内外部数据、治理数据质量),再将 AI 嵌入研发、制造、营销、服务等业务链路解决痛点,搭配混合算力架构保障技术落地,辅以 “小场景试错 - 复制” 战略、跨部门团队等方法论。结合美的集团数字化转型实践,最终实现 AI 对业务降本、增效、增收的价值,为企业 AI 转型提供可复用路径。

专注数据驱动领域原创分享。拆解从数据采集、建模分析到业务价值落地的全链路实践,聊决策逻辑、技术工具与场景案例。用通俗语言讲透数据如何赋能业务,与同路人共探数据价值。 1892

【QT/C++】事件过滤器之基于重写 eventFilter 方法的多种常见应用场景及实现

Qt事件过滤器通过重写eventFilter方法实现多种实用功能:1)鼠标事件处理(点击全选文本、禁用滚轮、悬停提示);2)键盘事件处理(输入内容限制、快捷键提交);3)焦点事件处理(自动弹出下拉框、实时验证);4)绘图事件处理(自定义控件绘制);5)窗口事件处理(防止意外关闭、尺寸限制)。事件过滤器提供非侵入式的事件处理方案,相比传统子类化方式更灵活,通过installEventFilter安装到目标控件即可实现各种交互增强功能。

yuhuasheng1997的博客 1484

canvas实现涂鸦效果--基本涂鸦效果

用canvas实现涂鸦效果,包括更换笔触大小颜色、换背景图、橡皮檫、历史记录、清屏等功能,并能保存涂鸦图片到本地。 由于篇幅问题,本文主要实现基本涂鸦效果。 编写静态页面 html代码和css样式如下图,这一块比较简单,也不是本文重点,可自行查看,最后效果如图1。 实现原理 声明变量和初始化数据,详细代码如下图,具体用途说明都已经有备注,主要分析两点: 1.offCa...

King博客 5700

SAP GR(Group Reporting)配置篇(五)

1.5、合并的货币换算1.5.1指定折算比率菜单路径组报表的SAP S4HANA >合并的货币换算>-指定折算汇率事务代码GCRF说 明1.5.2维护汇率菜单路径组报表的SAP S4HANA >合并的货币换算>维护汇率事务代码CXCC/OB08说 明实际测试的时候根据实际情况维护汇率。输入换算比率。1.5.3定义汇率标识符菜单路径组报表的SAP S4HANA >合并的货币换算>定义汇率标识符事务代码OC41说 明配置了月末汇率和平均汇率。

weixin_43853754的博客 554

Canvas网页涂鸦板再次增强版

目录第一版Canvas涂鸦板第二版Canvas涂鸦板第三版Canvas涂鸦板体验涂鸦板 第一版Canvas涂鸦板 实现功能:在涂鸦板上鼠标按下去拖动的涂鸦效果 实现思路:监听鼠标按下、移动、松开事件,将鼠标按下的值赋值给moveTo的x和y值,作为起始位置。在移动事件中,将鼠标距离可视区x和y值赋给lineTo,再进行描边。 实现代码 <!DOCTYPE html> <htm...

不愿意做鱼的小鲸鱼の博客 2054

汽车行业新能源汽车数据爬虫:抓取新能源汽车数据,分析市场发展和技术创新

在汽车行业,新能源汽车市场的发展和技术创新是当前的热点话题。通过抓取新能源汽车的数据,我们可以深入了解市场趋势、消费者需求以及技术创新的方向。本文将详细介绍如何使用 Python 爬虫技术抓取新能源汽车数据,并对数据进行分析和可视化展示。

u014481728的博客 1143

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

原 android 涂鸦(清屏,画笔,粗细,保存)以及canvas源码学习

原 android 涂鸦(清屏,画笔,粗细,保存)以及canvas源码学习 发表于2年前(2013-04-16 18:38) 阅读(6070) | 评论(9) 29人收藏此文章, 我要收藏 赞2 慕课网,程序员升职加薪神器,点击免费学习canvas 涂鸦 源代码 清屏更新:本文的内容只是一部分,这段时间添加了橡皮擦这个新功能,于是问题接二连三的来,比如说:如果用本文的内容去做橡皮擦的话

Android_devT的专栏 2429

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

android 涂鸦(清屏,画笔,粗细,保存)以及canvas源码学习

更新:本文的内容只是一部分,这段时间添加了橡皮擦这个新功能,于是问题接二连三的来,比如说:如果用本文的内容去做橡皮擦的话,难!(至少我没解决,不是没背景图,就是有背景图但是更新要在下一下刷橡皮擦的时候才能更新效果),然后有个setbackgroundresource的函数,这个函数就可以了,但是问题又来了,比如说保存,清屏,但是我都解决了(清屏的话就是重新构造一个图,当clear的时候就...

ddfo79355的博客 337

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

canvas实现涂鸦效果--橡皮檫和历史记录

利用canvas实现涂鸦效果,包括更换笔触大小颜色、换背景图、橡皮檫、历史记录、清屏等功能,并能保存涂鸦图片到本地。 由于篇幅问题,本文主要实现橡皮檫和历史记录功能,该部分功能不操作背景图片,最终效果如下图。 Tips:本文是在《canvas实现涂鸦效果--基本涂鸦效果》、《canvas实现涂鸦效果--大小颜色背景图》和《canvas实现涂鸦效果--清屏和保存功能》基础上添加功能。 橡...

King博客 7450

canvas实现涂鸦效果--大小颜色背景图

利用canvas实现涂鸦效果,包括更换笔触大小颜色、换背景图、橡皮檫、历史记录、清屏等功能,并能保存涂鸦图片到本地。 由于篇幅问题,本文主要实现更换笔触大小颜色和换背景图功能,最终效果如下图。 Tips:本文是在《canvas实现涂鸦效果--基本涂鸦效果》基础上添加功能,基础功能可参考上面文章(修改了一处地方drawLine(ctx, lastCoordinate.x, lastCoordi...

King博客 1693

Android图片涂鸦功能,Android之给图片添加涂鸦(文字)

原图:效果图:代码如下:public class GraffitiView extends View{private Paint paint = null;/** 源图*/private Bitmap originalBitmap = null;/** 需要涂鸦的图片*/private Bitmap new1Bitmap = null;/** 涂鸦之前*/private Bitmap new2Bi...

weixin_36035992的博客 1201

react-native-sketch-canvas核心功能解析:从基础涂鸦到高级绘图技巧

react-native-sketch-canvas是一个强大的React Native组件,专为iOS和Android平台设计,让开发者能够轻松实现触摸绘图功能。无论是简单的涂鸦应用还是专业的绘图工具,这个库都能提供完整的解决方案,帮助你快速构建流畅的手绘体验。 ## 为什么选择react-native-sketch-canvas? 在移动应用开发中,实现高质量的绘图功能往往需要处理复杂的手

gitblog_00059的博客 1091

canvas画板模拟器 - Kaiqisan

画板模拟器 就是画板模拟器 主要功能 画图,可以切换不同颜色,可以撤回动作,可以保存图画,也可以一键清屏,目前的页面不太干净,也没法自定义颜色,在有空的时候会抽空更新,有想法的各位也可以在文章下方拿取我的代码进行修改。 主要代码 clear[2].onclick = () => { let a = document.createElement('a') // 创建一个a节点插入的document let event = new MouseEvent('click')

Kaiqisan的博客 464

Android趣味小实例—涂鸦画板

自己写了一个涂鸦画板,直接上源码,网上的资源很多,但是需要注意:很多网上资源代码里设置的是drawLine,个人感觉drawPath效果更佳,源码如下: public class MainActivity extends Activity implements OnTouchListener { SurfaceView mSurfaceView=null; SurfaceHolder mSu

李标标的博客 1166

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

今天给各网友分享一款基于HTML5 Canvas的画板涂鸦动画。记得之前我们分享过一款HTML5 Canvas画板工具,可以切换不同的笔刷,功能十分强大。本文今天要再来分享一款基于HTML5 Canvas的画板涂鸦动画应用,功能和之前那个类似,但是新增了回撤和清空画板的操作,实现思路也基本类似。实现的效果图如下: 在线预览源码下载 实现的代码。 html代码: <div...

weixin_30436101的博客 200

手把手教你实现一个canvas智绘画板

前言 本文主要介绍: 项目介绍 项目效果展示 一步步实现项目效果 踩坑 一、项目介绍 名称: 智绘画板 技术栈: HTML5,CSS3,JavaScript,移动端 功能描述: 支持PC端和移动端在线绘画功能 实现任意选择画笔颜色、调整画笔粗细以及橡皮檫擦除等绘画功能 实现在线画板的本地保存功能 支持撤销和返回操作 自定义背景颜色[这个功能尚未完善好] 注:本项目仅仅是canvas和Java...

weixin_34381687的博客 669
上一篇: canvas实现涂鸦效果--大小颜色背景图
下一篇: canvas实现涂鸦效果--橡皮檫和历史记录
king0964
博客等级 码龄19年 911粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值