【问题标题】:Can I serialize the paths drawn on canvas for redrawing the paths on relaunch of the application我可以序列化画布上绘制的路径以在重新启动应用程序时重绘路径吗
【发布时间】:2012-02-08 14:45:56
【问题描述】:

我有一个应用程序,它使用画布绘制用户完成的涂鸦。我已经序列化了外部文件中的路径并将其保存在 sd 卡中。当用户再次启动应用程序然后单击 (ReDraw) 按钮时,我希望在画布上重绘保存的路径。我无法重绘路径。我在调试和检查时从文件中检索路径。但我不知道为什么路径没有被重绘。 请帮忙。

【问题讨论】:

  • 这是 html 画布吗?你也可以给我们一个jsfiddle.net链接吗

标签: android serialization graphics path


【解决方案1】:

我从 another question here 我做了一些修改,效果很好。

为了理解,我们可以认为我们只需要存储一个动作和点的地图。我们需要 path.moveTo(int x, int y), path.lineTo(int x, int y), path.quadTo(int x1, int y1, int x2, int y2) 和 path.reset() 用于涂鸦的方法。
这种情况下的动作是:lineTo、moveTo、quadTo、reset 和 points 是对应的点。

我为 x 取了两个数组 1,为 y 取了另一个数组。对于 quadTo(x1,y1,x2,y2) 我们需要两个点,对于重置我们不需要点,对于其他我们需要一个点 (x,y)。
我们可以认为动作是键,{arrayX[], arrayY[]} 是动作的值。对于像 lineTo 和 moveTo 这样的动作,arrayX[] 和 arrayY[] 的大小为 1,quadTo 的大小为 2,reset 的大小为 0(或者我们可以让两个数组都为 null ),因为在这种情况下,我们不需要积分.在从对应于 Action 键的数组中检索点的值时,我们只需要小心。当 action 是 lineTo 时,我们只是在画布上绘制路径。谢谢克里希纳

【讨论】:

  • 你能把你的修改后的代码吗?因为该链接中的代码对我不起作用。
猜你喜欢
  • 2019-04-12
  • 1970-01-01
  • 1970-01-01
  • 2013-05-18
  • 1970-01-01
  • 2021-06-25
  • 1970-01-01
  • 1970-01-01
  • 2020-10-14
相关资源
最近更新 更多