如何序列化包含修改后的CGMutablePathRef的CGContext?
我目前将上下文保存到png表示中并对其进行序列化,但这会导致视网膜显示问题。
我想避免序列化视网膜版本并在运行时调整它的大小,因为这样效率很低。
答案 0 :(得分:5)
如果您只是抚摸或填充单个路径,可以将其包装在符合UIBezierPath
协议的NSCoding
中,然后您可以序列化UIBezierPath
:< / p>
UIBezierPath *uiPath = [UIBezierPath bezierPathWithCGPath:cgPath];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:uiPath];
然后您可以将data
写入文件或数据库或其他任何内容。之后,您可以将data
转换为UIBezierPath
,然后转换为CGPath
:
UIBezierPath *uiPath = [NSKeyedUnarchiver unarchiveObjectWithData:data];
CGPathRef cgPath = uiPath.CGPath;
如果要绘制比单个路径更复杂的东西,以可缩放(矢量)格式序列化绘图的最简单方法是绘制到CGPDFContext
而不是CGBitmapContext
。 A CGPDFContext
将您的绘图命令记录到PDF。稍后,您可以为PDF创建CGPDFDocument
,并使用它将PDF绘制到位图上下文中。有关详细信息,请阅读PDF Document Creation, Viewing, and Transforming chapter of the * Quartz 2D Programming Guide*。