首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android画板开发之撤销撤销功能

一、分析 这篇将会讲解撤销撤销功能的实现,先讨论一下这个原理是怎么样实现的。 每次撤回的内容,内容是怎么定义呢?...撤销的时候就把后面的一个数据移到另一个撤销列表 反撤销的时候,就把撤销列表的最后面那条数据移动到已画列表。...接下来跟着我实现 二、实现 如何实现撤回功能 2.1 定义数据类 首先,需要一个bean类存储每一笔的数据,这里定义一个PaintData,里面需要定义个draw方法,因为撤销的时候,需要重新绘制...data class PaintData( var mPaint: Paint, //保存画笔 var mPath: Path //保存路径 ) { /** * 撤销和反撤销之后...<PaintData () //已经撤销的列表 private var mRevokedList: MutableList<PaintData = ArrayList<PaintData () 添加固话层

2K10

dotnet 文档应用的撤销重做设计

文档应用是指如 Word 或 PPT 等的提供给用户进行内容创作的工具,而撤销重做其实也被称为撤销恢复功能。...撤销重做功能也是可以从一个小功能,迭代成为一个文档的核心模块 在软件开始开发的时候,很少会有人能了解这个软件产品的未来,如果此时就给很多小功能模块投入大量的资源,那大部分都会是浪费的。...原因是在 C# 里面是继承的,如果是抽象的类,将会让某些业务的代码不好编写。有些业务的代码已经需要继承某个类了,而如果此时这个类需要插入到 撤销重做栈 将会发现不能再继承一个抽象类。...如果有这样的需求,那么对于 IOperation 的设计上,就需要开发者设置为基于数据,不能基于对象的动作 另外,即使没有漫游同步的功能,其实文档保存也可以复用撤销重做提供的功能。...在文档保存的时候,很多文档软件都有自动保存的功能,如 VS 软件。在文档内容很多,保存一次需要大量的时候时,就需要用到增量的功能,那么如何实现增量?

62940
您找到你想要的搜索结果了吗?
是的
没有找到

仿Excel的撤销功能

也就是,模仿Excel的撤销功能,特别是当VBA代码对工作表进行操作后,使用Excel原始的撤销功能是无法恢复的,但可以使用VBA代码来实现,似乎就像Excel的撤销功能一样。...主要思路是使用一个工作表,来记录对工作表所做的修改,如果要撤销这些修改,就从这个工作表取出原来的值来恢复。注意,本文的示例只针对特定区域,且只能撤销两次。...关闭事件以便下面的代码不会触发Worksheet_Change事件 Set wsU = Sheets("UNDO") ' 名为UNDO的隐藏工作表 Set ws1 = Sheets("Sheet1") ' 要撤销操作的工作表..."D" & x).Value ' 将之前的值写回ws1 wsU.Range("A" & x & ":D" & x).ClearContents ' 清空UNDO工作表中的行, 这允许有更多的撤销...或者,在完美Excel微信公众号中发送消息: 仿撤销功能 获取示例工作簿下载链接。 或者,直接到知识星球APP完美Excel社群中下载该工作簿。

2910

探究 canvas 绘图中撤销(undo)功能的实现方式

项目需求中有一个给图片添加水印的功能。我们知道,在浏览器端实现图片添加水印功能,通常的做法就是使用 canvas 的 drawImage 方法。...但是略麻烦的是添加水印的需求中还有一个需要实现的功能是用户能够切换水印的位置。...我们自然会想到能否实现 canvas 的 undo 功能,当用户切换水印位置时,先撤销上一步 drawImage 操作,然后再重新绘制水印图片位置。 restore/save ?...在执行 undo 操作时,从栈中取出最新保存的快照,然后重新绘制画布,即可实现撤销操作。实际测试也符合预期。 性能优化 上一节中我们很粗犷地实现了 canvas 的撤销功能。为什么说粗犷呢?...之前说过,我们通过对整个画布保存快照的方式来记录每个操作,换个角度思考,如果我们把每次绘制的动作保存到一个数组中,在每次执行撤销操作时,首先清空画布,然后重绘这个绘图动作数组,也可以实现撤销操作的功能

2K50

Android实现iPhone晃动撤销输入功能 Android仿微信摇一摇功能

很多程序中我们可能会输入长文本内容,比如短信,写便笺等,如果想一次性撤销所有的键入内容,很多手机需要一直按住退格键逐字逐句的删除,稍稍麻烦,不过在iPhone上,有个人性化的功能,当我们想要去撤销刚刚输入的所有内容的时候...在android中,一般手机貌似没有定制这个功能,不过我们可以自己去实现这样的功能,放置在我们的项目程序中,体现更人性化的设计,思路很简单,主要是利用手机内置的加速度传感器装置,其实大家一定会想到微信的...“摇一摇”功能,个人觉得该功能就应该是这样实现的,当我们错误输入并想撤销所有输入内容的时候,可以摇晃我们的设备,弹出一个自定义的alertdialog,根据按钮的点击事件完成相应的清除操作。...点击“撤销键入”,即可将文字清空! 以上就是本文的全部内容,希望对大家的学习有所帮助。

1.9K62

xwiki功能-文档生命周期

XWiki提供了对文档(即页面)执行多个动作。 创建 有三种方法来创建新的页面。 通过链接 你可以编辑已有的页面并创建一个链接到你的新页面(无论是在wiki模式或WYSIWYG模式)。...当使用Flamingo皮肤,通过点击“更多”来操作打印预览: 打印预览:生成一个页面,该页面被格式化,这样就可以使用浏览器的打印功能来打印。...你可以决定是否同时删除当前文档的子文档。...通常情况下,此复选框是非选中的,但在这种情况下,我们很容易会忘记有关文档(隐藏或自动创建)和删除的页面可能依旧会在一些地方出现残留。...然后,你必须等待页面删除: image.png 最后,将有成功的消息提示: 恢复 可以在文档索引应用程序恢复已删除的文件或从垃圾站中删除它(你需要有管理权限)。

1.1K20

文档加了个小程序的功能

接手文档项目后,想看看用户对文档有什么反馈,除了一部分错误的反馈外,还收到一部分有价值、但是不「善良」的反馈。 ? 这个点,也是我一直想做的,能不能让文档的展示形态更加丰满些?...在进行小程序开发时,基础库提供了大量灵活的组件可提供给开发者使用,并且配套了一些详细的文档内容。...现在的体验还停留在贴图、贴代码上,为了提供更高的文档体验,这里提供了在文档内实现 demo preview 的效果,在看组件代码时,也能同步了解该组件具体呈现的效果。...一个完整的文档预览小程序,需要几块工作量: 编译工具 runtime 容器预览 文档预览结构 编译工具 现在小程序内部编译工具是以 wcc 和 wscs 为核心,然后外层自定义独立小程序编译代码的内容拼接...整个过程做下来,文档预览 runtime 的大致模样也基本定了。 文档预览结构 在编译工具和 runtime 内容预览两个大头工作量搞定之后,剩下主要是如果结合文档来进行编译的耦合实现。

45630
领券