Pb : Affichage sur un slider!!

olivier555olivier555 Membre
12:31 modifié dans API AppKit #1
Bonjour bonjour.
Je vais essayer d'être clair, c'est tendu. Tout d'abord je bosse sur project builder 2.1 et je suis débutant en Cocoa.
Alors voilà , j'essaye de réaliser une fonction pour une fenêtre composée d'un slider et d'une custom view (dont la custom class contient ladite fonction euh... vous suivez??). Lorsqu'on fait bouger le slider, la fonction est censée recalculer ce qui s'affiche sur la vue. Pour l'affichage, j'ai fait un drawRect classique, qui s'initialise parfaitement (le tout 1er drawRect marche bien). Ensuite, lorsque je bouge les sliders, après le recalcul de divers paramètres, la fonction appelle encore drawRect mais là , un bout d'image s'affiche sur... le slider lui même!! L'image présente sur la vue, elle, ne bouge pas d'un poil (c'est le tout premier appel à  drawRect qui reste statique). Y aurait-il t-il quelquechose que je n'ai pas compris dans les NSRect, les custom view ou je ne sais quoi?? Merci de voter aide!!!

Réponses

  • VeillardVeillard Membre
    12:31 modifié #2
    Bonjour Olivier et bienvenue  ;)

    As-tu fait un :
    [myView setNeedsDisplay:YES]; <br />
    

    pour ta vue ?
  • BruBru Membre
    12:31 modifié #3
    Favouille a raison, au lieu d'appeler drawRect:, il est préférable d'utiliser setNeedsDisplay:YES.

    Pour ton problème spécifique, tu as simplement oublié d'encadrer l'appel à  drawRect: avec un lockFocus et unlockFocus sur ta custom view.

    .

  • olivier555olivier555 Membre
    12:31 modifié #4
    OK merci de votre réponse rapide les gars, je vais essayer!!
  • fouffouf Membre
    12:31 modifié #5
    Salut Olivier.

    Normalement, tu n'as jamais a appeler drawRect: directement. Le window serveur le fais pour toi. Par contre il faut que tu signales que ta vues est "sale" est qu'il faut l'actualiser. Pour cela tu as la methode donnee par Bru qui va reactualiser toute la vue et aussi setNeedsDisplay:inRect: qui ne va reactualiser seulement la partie de la vue situee dans le rectangle que tu as mis en argument.

    Voili voilou
  • olivier555olivier555 Membre
    12:31 modifié #6
    OK OK! Merci de ton explication c'est plus clair!
Connectez-vous ou Inscrivez-vous pour répondre.