impossibilité de dessiner un "rect"

macvelottemacvelotte Membre
07:55 modifié dans API AppKit #1
Le code suivant :
<br />- (void)drawRect:(NSRect)rect<br />{<br />	NSRect bds= [self bounds];<br />	[[[NSColor greenColor]colorWithAlphaComponent:0.4f]set];<br />	[NSBezierPath fillRect:bds];<br />}<br />

me vaut pour la première ligne : "invalid initializer"..

Or je l'ai rempris d'autres applications pour lesquelles le même code est accepté.
Je ne comprends pas ! >:(

Réponses

  • LeChatNoirLeChatNoir Membre, Modérateur
    07:55 modifié #2
    ben déjà , tu peux utiliser rect non ?
    Ca donnerai :
    [[[NSColor greenColor]colorWithAlphaComponent:0.4f]set];
    [NSBezierPath fillRect:rect];

    Mais pour le pb de la première ligne, il faudrait savoir ce qu'est "self". Si c'est un objet descendant de NSView, ça devrait marcher. Sinon, faut que l'objet réponde à  la méthode bounds et que celle ci renvoie bien un NSRect.

    a+
  • macvelottemacvelotte Membre
    07:55 modifié #3
    C'était une question pour rien : ça marche, mais je n'ai pas compris pourquoi ça bloquait !

  • CéroceCéroce Membre, Modérateur
    07:55 modifié #4
    dans 1144064505:

    ben déjà , tu peux utiliser rect non ?


    Euh... je vais peut-être dire une connerie, mais il me semble que rect est la portion à  dessiner ou redessiner, pas forcément le rectangle englobant.
    Dites-moi si je me trompe, c'est loin tout ça...
  • BruBru Membre
    07:55 modifié #5
    dans 1144151647:

    Euh... je vais peut-être dire une connerie, mais il me semble que rect est la portion à  dessiner ou redessiner, pas forcément le rectangle englobant.
    Dites-moi si je me trompe, c'est loin tout ça...


    Non, tu ne te trompes pas.

    L'argument rect provient de la somme des rectangles à  redessiner dans la vue.
    Ces rectangles proviennent de la méthode setNeedsDisplayInRect: et consort de NSView.

    .
Connectez-vous ou Inscrivez-vous pour répondre.