Dessiner sous cocoa

KassKass Membre
12:16 modifié dans API AppKit #1
Bonjour a tous,

J'ai besoin d'un petit coup de pouce pour dessiner des formes géométriques simples avec cocoa. J'ai donc créé une NSView dans ma Window, que j'ai ensuite lié a une classe dérivée de NSView puis donc dessiné via la mettons DrawRect.
Jusque la pas trop de soucis, j'arrive a dessiner des rectangles ou des cercles (les seules formes que j'ai besoin de dessiner).
Les complications arrivent après tout ça.
Je créé un mini programme qui réalise une série de 10 tests successifs. Pour chacun d'entre eux je dois afficher un ou plusieurs cercles et carrés. Leur taille est elle aussi a chaque fois différente. J'aimerai aussi pour un des test, pouvoir modifier la taille de via un slider.

Le soucis est donc que la méthode drawRect dessine toujours la même chose, mais je ne peux pas communiquer avec la classe pour envoyer par exemple la taille des formes a dessiner.

J'espère avoir pu expliquer tout ça correctement et que quelqu'un puisse m'aider.

Réponses

  • DrakenDraken Membre
    avril 2011 modifié #2
    Tu peux communiquer avec ta NSView personnalisée en lui ajoutant une ou plusieurs propriétés, avec un code du genre :

    @interface VueTests : UIView {<br />	NSInteger tailleRectangle;<br />}<br /><br />@property (nonatomic, assign) NSInteger tailleRectangle; <br /><br />@end<br />
    


    C'est pour Cocoa Touch. Je ne connait pas grand chose à  Cocoa OSX. Mais je présume que la seule différence est quelques UI.. à  la place de NS...

    - (void)drawRect:(CGRect)rect {<br /><br />	CGContextRef context = UIGraphicsGetCurrentContext();<br />	UIColor *couleur = [UIColor blueColor];<br />	CGContextSetFillColorWithColor(context, couleur.CGColor);<br />	<br />	for (NSInteger n=0;&nbsp; n&lt;10; n++) {<br />		CGRect monRectangle = CGRectMake(n*10, n*10,<br />					tailleRectangle,&nbsp; &nbsp; // &lt;&lt;&lt;&lt; ICI LA PROPRIETE<br />					tailleRectangle);&nbsp;  // &lt;&lt;&lt;&lt; ICI AUSSI<br />		CGContextFillRect(context, monRectangle);		<br />	}<br />}<br />
    

  • KassKass Membre
    12:16 modifié #3
    Merci Draken pour ton aide!

    J'avais déjà  essayé de faire comme ca, et je ne comprenais vraiment pas pourquoi ça ne marchait pas, j'ai du faire une bourde quelque part. Mais maintenant tout marche :)

    Merci encore
  • DrakenDraken Membre
    12:16 modifié #4
  • HerveHerve Membre
    12:16 modifié #5
    D'une manière générale, tu auras intérêt à  avoir un tableau de valeurs que tu peux appeler et modifier depuis n'importe quelle autre classe (au moins depuis le AppController) qui stockera les coordonnées et tailles de tes dessins.

    Personnellement, je fais une classe Figure avec des NSPoint et NSSize, voire un entier pour le type (0 = rectangle, 1 = cercle, etc.), une couleur, etc.  puis un tableau de ces figures dans le NSApp (que l'on peut sauver à  part : ce sont les données) et que j'envoie au NSView pour le dessin.
Connectez-vous ou Inscrivez-vous pour répondre.