Domanda

Stiamo ripetutamente facendo un CGLayer, facendo di elaborazione, e poi rilasciarlo. Questo accade molto in tempo reale. Sicuramente c'è un sacco di spese generali nel fare una nuova CGLayer ogni volta. Quindi ...

Sicuramente sarebbe meglio solo mantenere lo strato intorno, e cancellare tutti i dati da esso ogni volta -., Piuttosto che crearne uno nuovo da zero

. Nota: se si dipinge in un vuoto o chiaro rettangolo che copre tutto, che aggiunge ancora più dati in cima ai vostri percorsi esistenti

Quindi, come in realtà "cancellare" o "ricominciare da capo" un CGLayer?

C'è una funzione CGContextBeginPath (cc) ma è confuso: sembra per cancellare solo "che" percorso, non sembra per cancellare tutta la schiena CGLayer allo stato .

Come restituire un CGLayer ad uno stato di non-dati? Qualcuno sa?

Aggiornamento ...

Sembra che v'è in realtà alcun modo per fare questo.

Dopo la considerevole sperimentazione, abbiamo determinato che non sembra esserci alcun modo per cancellare tutti i dati da un CGLayer (che è deludente in realtà).

Si noti che l'aggiunta di un nuovo rettangolo bianco o chiaro, fa solo quello -. Aggiunge in realtà più dati

modo Così, purtroppo, non noto per fare questo. Se si sta costruendo questi ad alta Hz (forse per un calcolo), non resta che iniziare con uno nuovo ogni volta. In alternativa, è possibile eliminare quanto pare (in realtà eliminare, non solo di copertura) solo quella percorso utilizzando CGContextBeginPath ().

Speriamo che questo vi aiuterà qualcuno in futuro.

È stato utile?

Soluzione

Una volta che hai la chiamata contesto CGContextClearRect (cc, someRect) per cancellare il contenuto.

Altri suggerimenti

Perché non solo riempie con un rettangolo di (bianco trasparente /) di colore? Assicurarsi che il livello non è opaca se si vuole cancellare con clearColor (trasparente).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top