2012-04-22 58 views
0

看来,绘制点,线,圆和贝塞尔路径的标准方法是将它们绘制在drawRect的内部。我们不直接调用drawRect,但只是让iOS的调用它,我们可以使用[self setNeedsDisplay]告诉iOS系统尝试调用drawRect何时能......在iPhone和iPad上,我们可以在不使用drawRect的情况下绘制任何东西吗?

它还看来,我们不能依靠

[self setClearsContextBeforeDrawing: NO]; 

在致电drawRect之前不清除视图的背景。一些细节在这个问题:UIView: how to do non-destructive drawing?

如何直接在屏幕上绘图 - 没有把这些代码在drawRect。例如,在ViewController.m中,有一些代码可以直接在屏幕上绘制点,线,圆。那可能吗?

+0

当然,如果您完全不使用UIKit绘图,而是使用OpenGL ES或像Cocos2D这样的更高级别的框架绘制图形,那么它是可行的。 – Felix 2012-04-22 11:03:47

+0

它是?那么只使用iOS框架呢?它可能像Win32能够绘制任何东西,当不在重绘功能(当任何矩形区域被“无效”) – 2012-04-23 00:18:07

+0

你是否必须依靠Cocos2D或OpenGL ES来做到这一点?来自苹果iOS的框架不会这样做? – 2012-04-24 04:03:22

回答

1

无需拖放到OpenGL中,您可以做的最接近清除的方法是使用类似CGBitmapContextCreateImage的方式将上下文转换为图像。从那里,您可以将图像保留在内存中(或者在必要时将其写入磁盘),然后在重绘视图时,首先将该原始图像绘制到上下文中,然后用新内容覆盖它。

相关问题