2012-04-22 5 views
0

ドット、線、円、およびベジェパスを描画する標準的な方法は、drawRectの内側に描画することです。我々はまた、我々はiPhoneとiPadで、drawRectを使用せずに何かを描画できますか?

[self setClearsContextBeforeDrawing: NO]; 
に頼ることができないようです

...直接drawRectを呼び出すが、ちょうどiOSのは、それを呼ぼうと、私たちは時にそれができるdrawRectを呼び出そうとするのiOSを伝えるために[self setNeedsDisplay]を使用することができません

drawRectを呼び出す前に、ビューの背景をクリアしないようにしてください。いくつかの詳細はこの質問にあります:UIView: how to do non-destructive drawing?

これらのコードをdrawRectに入れずに、画面に直接描画することはどうでしょうか?たとえば、ViewController.mには、ドット、線、円を直接描画するコードがあります。それは可能ですか?

+0

もちろん、UIKitの描画をまったく使用せず、代わりにOpenGL ESまたはCocos2Dのようなより高いレベルのフレームワークを使用して描画するのが有益です。 – Felix

+0

ですか? iOSフレームワークを使用するのはどうですか? Win32のように、描画機能にないとき(何らかの矩形領域が無効になったとき)に何かを描くことができるかもしれません –

+0

そして、Cocos2DやOpenGL ESに頼らざるを得ませんか? AppleのiOSからのフレームワークはそれをしませんか? –

答えて

1

OpenGLにドロップする必要はありませんが、消去を回避するために最も近いのはCGBitmapContextCreateImageなどを使ってイメージとしてコンテキストを変換することです。そこから、イメージをメモリに保持したり、必要に応じてディスクに書き込んだりすることができます。次に、ビューを再描画するときには、元のイメージをコンテキストに描画し、新しいコンテンツでオーバーレイします。

関連する問題