在我的应用中,用户可以创建多个对象(所谓的图纸),每个对象具有STIFEDINGCANVA,与SDKSAMPLES中的PhotoPad(照片绘画应用程序)非常相似(由MS Surface SP1 SDK提供)。 给出了储存Inkcanvas(绘图对象)内容的最佳方法,以至于可能会产生数十甚至数百个。

在一些研究之后,一个选项弹出:将其转换为图像,JPG或PNG,但此方法似乎似乎可扩展IMO。

是否可以将点存储在数据库中(优选地是sqlite)?

目标是能够在装载时恢复附图(Inkcanvas的内容)以进一步编辑。

有帮助吗?

解决方案 2

已经有一种格式,Microsoft用于保存笔画,这是ISF - 站立用于在.isf文件中保存笔划集的墨水序列化格式。

但是,在这个示例每个绘图都保存在一个单独的(但小尺寸).isf文件可以轻松加载回来进一步编辑甚至将(将)它转换为位图。

因此,一个很好的方法是保存文件中的每个图形(即使这比简单地将其存储在SQLITE DB中)并将其保存在诸如更昂贵的,而不是在SQLITE DB中的数据数据库识别每个会话。 从可伸缩性的角度来进一步优化该方法的任何建议?

其他提示

保存到图像对您想要做的声音并不是可行的,因为从位图中恢复传染媒介行比对于位图转换的矢量更难并且可能有损失,除了不是非常有效数据密度视角。

您可以编写一些代码来保存和恢复存储在笔触属性中的行集合。这将允许您将数据的大小降至最低并轻松存储在数据库中。每个笔划都有一些关于该行的样子和构成该行的一组点的数据。在重新加载时提取和恢复数据到另一个Inkcanvas是相当简单的。

您也可以使用XamlWriter / XamlReader将整个Inkcanvas序列化为XML,但您需要能够将新的Deserialized实例放入UI中,并确保不存在任何命名或资源并发症您的XAML往往会导致此方法误差。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top