如何将复杂的CGPath或矢量图像写入磁盘?

时间:2009-06-26 09:08:25

标签: iphone

我可以将CGPathRef的字节写入磁盘,然后稍后再读回来吗? 有一种简单的方法可以将SVG样式路径存储到磁盘吗?

我有一个非常复杂的SVG文件(~500K),我想将其转换为二进制格式,以便在iphone上进行最简单的存储和加载。查看svg文件,只有行和贝塞尔曲线,所有这些曲线都完全映射到核心图形路径基元。

非常感谢你,

Carl C-M

2 个答案:

答案 0 :(得分:2)

CGPathApplyCGPathRef的每个控制点调用回调。

您可以使用它将控制点写入磁盘。

答案 1 :(得分:1)

CGPathElement看起来像这样:

struct CGPathElement {
  CGPathElementType type;
  CGPoint * points;
};

其中元素类型是int,并且根据类型,有2到6个浮点数。

所以这可以序列化为以下

int;float;float;int;float;float;float;float;float;float;

所以我查看第一个字节,确定类型,根据类型获取下一个n * 4字节,并将其添加到我的路径中。

我真的只需要从二进制格式转到路径,但如果我需要转换回来,来自Rhythmic Fistman的CGPathApply绝对会成为使用的工具。