如何序列化包含修改后的 CGMutablePathRef 的 CGContext?
我目前将上下文保存为 png 表示并将其序列化,但这会导致视网膜显示出现问题。
我想避免序列化视网膜版本并在运行时调整它的大小,因为这样效率低下。
如何序列化包含修改后的 CGMutablePathRef 的 CGContext?
我目前将上下文保存为 png 表示并将其序列化,但这会导致视网膜显示出现问题。
我想避免序列化视网膜版本并在运行时调整它的大小,因为这样效率低下。
如果只是抚摸或填充单个路径,则可以将其包装在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 文档创建、查看和转换章节了解详细信息。