2010-01-19 5 views
5

créer un cercle avec une ombre agréable avec ce code (j'utilise MonoTouch.net pour iPhone, les réponses Objective-C sont bien sûr)iPhone clair CGContext

 UIGraphics.PushContext (ctx); 
     SizeF shadowSize = new SizeF (0f, -3f); 
     ctx.SetRGBFillColor (194f/255f, 212f/255f, 238f/255f, 1f); 
     ctx.SetAllowsAntialiasing (true); 
     ctx.SetShadowWithColor (shadowSize, 20, new CGColor (0.9f, 0.7f)); 
     RectangleF area = new RectangleF (35f, 15f, 210f, 210f); 
     ctx.FillEllipseInRect (area); 
     UIGraphics.PopContext(); 

Ensuite, je veux ajouter une nouvelle arc et lignes. Quand je fais, les couleurs et l'ombre, etc. semblent rester? Comment puis-je commencer à nouveau tout en dessinant mon UIView? (Tout est dans le même UIView, je construis l'image)

Répondre

13

Si vous voulez effacer tout ce qui est dessiné pour que vous ayez une toile vierge, essayez CGContextClearRect avant de dessiner quoi que ce soit. Mais je pense que vous voulez dire que vous voulez que l'ombre, la couleur de remplissage, etc. s'appliquent uniquement à cette ellipse et non aux choses que vous dessinez après. Pour ce faire, vous voulez appeler à nouveau les mêmes méthodes de définition d'état, mais avec des arguments différents. Par exemple, CGContextSetShadowWithColor attend une couleur d'ombre. Mais si vous passez NULL pour cet argument, il désactivera l'observation.

Voir aussi le CGContextSetShadow documentation, qui contient une note sur toutes les façons de désactiver l'observation. Choisissez le meilleur pour vous.

Je pense que votre principal problème est que vous ne profitez pas de l'excellente documentation d'Apple. Je comprends que MonoTouch.net mappe essentiellement les API Objective-C aux modules .NET avec des noms de symboles similaires ou identiques. Donc, avec une recherche rapide sur Google, vous devriez être en mesure de trouver la documentation correspondante dans la bibliothèque de référence iPhone OS.

+0

qui efface le cercle que je dessinais si –

+0

Ah j'ai mal compris. Modifier ma réponse –

1

Avant de commencer à dessiner, enregistrer l'état:

CGContextSaveGState(ctx); 

Puis, après que nous aurons fini, retourner l'état à ce qu'il était au début:

CGContextRestoreGState(ctx); 
Questions connexes