Cocoa 2D图形:Quartz,Core Image或Core Animation?

时间:2012-06-06 19:04:19

标签: objective-c cocoa core-animation core-graphics quartz-graphics

我现在已经阅读了几个小时documentation关于在objective-c cocoa应用程序中绘制二维图形。似乎有几种不同的技术都特定于某些任务。我的理解是以下技术可以做到以下几点。如果我错了,请纠正我。

  • Quartz 2D:用于将形状,文本和图像绘制到屏幕的主库。
  • 核心图形:这是包含Quartz的框架的名称。这可以用作Quartz的同义词。
  • QuartzGL:Quartz的GPU加速模式,默认情况下未启用,而不是necessarily faster用于在屏幕上绘制内容。
  • OpenGL:最低级别的库,以更多代码行为代价直接与显卡对话。更适合3D图形。
  • 核心图像:用于显示图像和文本的库,但不是用于绘制形状基元。
  • 核心动画:用于自动设置动画动画的库。显然不适合moving large numbers of objects。也不是continuous animation of objects
  • QuickTime:除了视频之外还显示图像和文本的库,但可能不适合绘制原始形状。

我想要做的是为某些特定类型的数据创建浏览器。视图不会非常复杂,包括在特定位置绘制矩形。但是,用户应该能够通过向左或向右拖动视图来移动,并且此移动应该是流动的。这是一个非常接近我想要做的例子:

http://jbrowse.org/ucsc/hg19/

您建议使用哪种绘图技术?我开始编码?

1 个答案:

答案 0 :(得分:5)

你想要Quartz。除非您绘制大量数据,否则任何Mac(我假设Mac不是iOS)都应该轻松处理。它简单,高效,可能会让您到达目的地。对于拖动动作,您可能会使用Core Animation图层来管理它。

注意:最终的所有内容都由AppKit(Mac)或UIKit(iOS)处理,最终由Core Animation处理。如果你正在做图形,你会在某些时候遇到核心动画,因为它管理所有显示的内容。

注意:如果您正在绘制那些大量数据,那么您可以使用OpenGL,但即使这样,在您开始显示之前不需要太多,可能需要数百万个顶点或者复杂的可视化。