在iPhone上使用Quartz绘制几个转换后的图像

时间:2009-07-07 20:37:43

标签: iphone graphics iphone-sdk-3.0 core-graphics quartz-graphics

我正在试图弄清楚如何最好地在iPhone应用程序中绘制场景。情况如下:

  • 我有一个想要绘制的视图
  • 我想要一张背景图片
  • 我想在背景上绘制几个不同的图像,每个图像都有不同的变换(旋转,缩放)
  • 我想在背景图像的顶部绘制几个文本块 - 我需要断言这些以及转换它们(旋转,缩放)
  • 我想在屏幕上绘制这些图像和文本块的动画(我不需要在第一次迭代中执行此操作,但我不想选择一条阻止我在此处执行此操作的路径未来。

我不确定从哪里开始 - 但是因为事情没有太多动画,所以看起来不一定非常高效,所以我认为Quartz将是最佳选择。

我能想到的一些可能的解决方案:

  • 使用quartz:将背景绘制到视图的cgcontext中。创建几个CGLayers并将文本/图像绘制到它们。转换CGlayers(你可以这样做吗?)然后将图层绘制到主CGContext。

  • 使用OpenGL:请不要。除非我真的需要。

想法?

感谢。

2 个答案:

答案 0 :(得分:1)

对图像使用核心动画CALayers(可以对它们应用转换)和UILabels用于文本。使用CoreGraphics绘图对于动画来说太慢了。

答案 1 :(得分:1)

大部分同意Marco。 CA非常适合这项工作。设置视图并添加一堆图层。

但有几点。

您可以使用NSString UIStringDrawing类别方法直接绘制文本。效果很好,没有UILabel的开销。

使用CoreGraphics绘制太慢,因为CoreAnimation会智能地缓存图层。也就是说,它只被绘制一次然后CA动画副本,除非该层被发送setNeedsDisplay消息。