首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复制和序列化Quartz引用的最佳实践

复制和序列化Quartz引用的最佳实践
EN

Stack Overflow用户
提问于 2010-10-16 17:33:27
回答 1查看 892关注 0票数 2

我有对象包含石英-2D引用(描述颜色,填充模式,梯度和阴影)在可可。我想在我的对象中实现NSCoding协议,因此需要序列化那些不透明的Quartz-2D结构。

可能的解决办法可能是:

  • 在我的对象中定义了一组属性,允许在需要时从头开始设置数据结构。然后,它们可以很容易地序列化。示例:存储红色、绿色、蓝色和alpha的四个浮标,然后使用CGColorCreate的缺点:复制信息,因此潜在的一致性和(到目前为止次要的)空间消耗问题。我需要手动编写属性设置器,以便每当组件更改时重新创建Quartz结构。这会增加我的代码substantially.
  • Read使用Quartz函数的属性。示例:使用CGColorGetComponents表示颜色。Disadvantage:,它似乎适用于颜色。但是其他结构没有等效的函数,所以我看不出这对于渐变、阴影、阴影等东西是如何工作的。
  • 直接从原始的、不透明的结构中读出属性。正如文档所述,Disadvantage:的结构应该是不透明的。所以,万一引擎盖下有什么变化,我的代码就会中断。(苹果当然不会提供像CGColorGetComponents这样的功能,如果应该这样做的话。)此外,像CGFunctionRefCGShadingRef中这样的东西确实是自找麻烦。

序列化石英结构的最佳实践是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-16 22:13:41

答案因班而异:

  • CGImage:使用CGImageDestination创建一个TIFF文件。(相当于NSImage的method.)
  • CGPath: TIFFRepresentation编写了一个更实用的函数,您可以用PostScript代码来描述路径的元素。编写一个简单的解释器,转到您所描述的可以导出ICC representation.
  • CGColor:的另一个representation.
  • CGColor:,但不要忘记包括颜色space.
  • CGLayer::创建一个位图上下文,在其中绘制图层,然后转储上下文的图像,然后序列化that.
  • CGFont: --对于大多数应用程序来说,名称应该足够了。如果你真的很喜欢(例如,使用变体功能),你会想要包括字体的变体字典。您必须单独维护您对字体大小的了解,因为it.
  • CGPDFDocument:没有字体大小,CGContext也不允许您快速查看在CGFont中设置的字体大小,看起来CGPDFObjects都是不可变的,所以您只需要存档原始的PDF数据或得到的URL -- from.
  • CGGradient,CGPattern、CGShading和大多数其他类: Yup,您已经完蛋了。您只需要单独维护创建对象的所有信息。
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3949984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档