2012-04-22 26 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的方式將上下文轉換爲圖像。從那裏,您可以將圖像保留在內存中(或者在必要時將其寫入磁盤),然後在重繪視圖時,首先將該原始圖像繪製到上下文中,然後用新內容覆蓋它。

相關問題