首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Skiasharp撤销/重做按钮

Skiasharp撤销/重做按钮
EN

Stack Overflow用户
提问于 2019-12-08 06:34:04
回答 2查看 294关注 0票数 0

我有一个带有位图的SkiaSharp canvas,您可以使用move/rotate/scale,但是现在我想在画布上创建一个Undo/Redo函数,但是我不知道如何开始。我要把所有的零钱都存起来.

有人能帮我走上正确的道路吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-28 17:24:46

如果您只是支持曲面的转换(旋转、缩放、平移),那么您所需要的就是存储TotalMatrix

https://learn.microsoft.com/dotnet/api/skiasharp.skcanvas.totalmatrix

对于每一个变化,拿着它,商店就在某种列表中的某个地方。然后,要撤消/重做,只需使用SetMatrix

https://learn.microsoft.com/dotnet/api/skiasharp.skcanvas.setmatrix

这可能就是你要找的。

SaveRestore看起来很诱人,但它们更适合当前的转换--保存状态、转换然后恢复。这允许在绘制单个图像时不太复杂的数学。

票数 0
EN

Stack Overflow用户

发布于 2019-12-08 07:02:07

https://learn.microsoft.com/el-gr/dotnet/api/skiasharp.skcanvas.restoretocount?view=skiasharp-1.68.1#SkiaSharp_SKCanvas_RestoreToCount_System_Int32_对你有用吗?

这可能意味着,在每个操作中,您都需要运行一个save(),而我不知道在内存方面需要多少空间。

这个save和count还原是我能找到的最接近撤销的东西。

如果您想要添加一个重做,那么这将是一个更复杂的事情,因为您需要解决如果我撤消某件事情会发生什么,进行另一次更改,然后重新执行取消的操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59233006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档