2011-01-04 6 views
3

CGLayerを繰り返し作成し、処理してから解放します。これはリアルタイムで多く発生します。確かに新しいCGLayerを作るたびに多くのオーバーヘッドがあります。だから... ...CGLayerからALL DATAをクリアするのに苦労しています - それはできますか?

確かにちょうどたびの周りに層を維持し、それから、すべてのデータを消去する方が良いだろう - むしろゼロから新しいものを作成するよりも。

注:あなたはすべてをカバーする、空白またはクリア長方形で描く場合、ちょうどあなたの現存するパスの上にさらに多くのデータを追加します。

実際にどのように"消去"または "再開" CGLayer?

あり、関数CGContextBeginPath(CC)であるが、それは混乱だ:唯一のクリアパスは、は戻っていないデータへの状態をCGLayerのすべてを消去する表示されない「ということ」のようです。

CGLayerをデータなしの状態に戻すにはどうすればよいですか?誰か知っていますか?

更新...

それは、これを実行する方法は、実際には存在しないが判明しました。

かなりの実験の後、私たちはCGLayerからのすべてのデータをクリアする方法がないと判断しました(これは本当に残念です)。

新しい白または透明な矩形を追加するだけで、実際にはそれ以上のデータが追加されることに注意してください。

残念ながらこれを行う方法は知られていません。あなたが高いhz(おそらく計算のため)でこれらを構築しているならば、毎回新しいものから始めなければなりません。または、CGContextBeginPath()を使用しての1つだけをのパスに削除する(実際には削除することはできません)。

これは今後のお役に立てば幸いです。

+0

こんにちは@Joe Blowさん、CGlayerからデータを消去するこの問題に悩まされています。私の問題は1つのレイヤーで消去して別のレイヤーに書き込むためです。ユーザーがペンとイレーズを切り替えるたびに、 CGContextClearRect()メソッドを使って前のレイヤーをクリアしますが、何が起こるかは、書き込みを消去してもう一度ペンをクリックしても書き込みをしないでもう一度消去をクリックしてから消去しようとするとすべての執筆がクリアされます。どのように私たちはこれを解決することができます私の質問はここにありますhttp://stackoverflow.com/questions/22201208/draw-one-cglayer-into-another-cglayer – Ranjit

答えて

2

コンテンツをクリアするCGContextClearRect(cc、someRect)をコンテキストコールしたら、

+0

明確なJon **は**実際には**データ**を削除しません。それは、(別の)明確なスライスを上に追加するだけです。 – Fattie

+1

データがどのように消去されるのかという疑問がある場合、これが正解である理由は分かりません。 – Ant

1

(クリア/ホワイト)色の四角で塗りつぶしてみませんか? clearColor(透明)でクリアする場合は、レイヤーが不透明でないことを確認してください。

+0

最初のGStateをバックアップし、完了したら元に戻すのはどうですか?それでは、プロセスは0になるでしょう)CGLayerを作成する1)saveGState 2)あなたがしたいことをする3)restoreGState 4)画面をクリアする5)restart from(1) – iwat

+0

こんにちはiWat!グラフィックスの状態は**ペンの色、線の太さ、背景の色**などを含むことを忘れないでください---残念なことに* NOT *実際のパスとデータ! – Fattie