1

如何序列化包含修改后的 CGMutablePathRef 的 CGContext?

我目前将上下文保存为 png 表示并将其序列化,但这会导致视网膜显示出现问题。

我想避免序列化视网膜版本并在运行时调整它的大小,因为这样效率低下。

4

1 回答 1

5

如果只是抚摸或填充单个路径,则可以将其包装在UIBezierPath符合NSCoding协议的 a 中,然后您可以序列化UIBezierPath

UIBezierPath *uiPath = [UIBezierPath bezierPathWithCGPath:cgPath];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:uiPath];

然后您可以写入data文件或数据库或其他任何内容。稍后您可以转换data回 aUIBezierPath然后 a CGPath

UIBezierPath *uiPath = [NSKeyedUnarchiver unarchiveObjectWithData:data];
CGPathRef cgPath = uiPath.CGPath;

如果您正在绘制比单个路径更复杂的东西,以可缩放(矢量)格式序列化您的绘图的最简单方法是绘制到 aCGPDFContext而不是 a CGBitmapContext。ACGPDFContext将您的绘图命令记录到 PDF 中。稍后,您可以为 PDF 创建一个CGPDFDocument,并使用它将 PDF 绘制到您的位图上下文中。阅读* Quartz 2D 编程指南* 的 PDF 文档创建、查看和转换章节了解详细信息。

于 2012-11-24T02:48:42.640 回答