jar*_*ryd 1 core-graphics objective-c
如何序列化包含修改后的CGMutablePathRef的CGContext?
我目前将上下文保存到png表示并序列化,但它导致视网膜显示问题.
我想避免序列化视网膜版本并在运行时调整它的大小,因为这样效率很低.
如果您只是在抚摸或填充单个路径,则可以将其包装在UIBezierPath符合NSCoding协议的a中,然后您可以序列化UIBezierPath:
UIBezierPath *uiPath = [UIBezierPath bezierPathWithCGPath:cgPath];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:uiPath];
Run Code Online (Sandbox Code Playgroud)
然后你可以写data一个文件或你的数据库或其他什么.稍后你可以转换data回a UIBezierPath然后a CGPath:
UIBezierPath *uiPath = [NSKeyedUnarchiver unarchiveObjectWithData:data];
CGPathRef cgPath = uiPath.CGPath;
Run Code Online (Sandbox Code Playgroud)
如果您正在绘制比单个路径更复杂的东西,那么以可缩放(矢量)格式序列化绘图的最简单方法是绘制CGPDFContext而不是a CGBitmapContext.A CGPDFContext将绘图命令记录到PDF.稍后,您可以CGPDFDocument为PDF 创建一个,并使用它将PDF绘制到您的位图上下文.有关详细信息,请阅读*Quartz 2D编程指南*的PDF文档创建,查看和转换章节.