Conseil Quartz 2D
Poisson
Membre
Bonjour à tous,
Je débute avec Quartz 2D ce matin j'ai eu un peu de mal, mais maintenant j'y vois un peu plus clair, j'ai cependant une question.
Quelle est la différence (question performance et/ou bonne pratique) entre :
CGContextSaveGState(context);
for (int i=0; i< 7; i++)
{
CGContextDrawLayerAtPoint (context, CGPointZero, stripeLayer);
CGContextTranslateCTM (context, 0.0, spacing);
}
CGContextRestoreGState(context);
et celui-là :
for (int i=0; i< 7; i++)
{
CGPoint coord = CGPointMake(0, spacing * i);
CGContextDrawLayerAtPoint(context,coord, stripeLayer);
}
La différence notable est la présence (ou non) de la sauvegarde et de la restauration du context.
Merci pour votre aide
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
http://www.apeth.com/iOSBook/ch15.html
Note: ce n'est pas clairement dit dans la doc, mais une restauration du contexte est effectuée après l'exécution de -drawRect:.
Il y a une autre raison à préférer la seconde méthode: en général, il est plus facile de déboguer des coordonnées absolues que relatives.
Donc une save avant l'appel ? Sur OSX aussi ? T'as une source là dessus ?
(non je ne suis pas inquisiteur )
En fait, c'est implicite, tu imagines le souk qu'on pourrait mettre autrement, juste parce qu'on a oublié de remettre comme c'était ;-)