Origine
muqaddar
Administrateur
Salut,
J'écris ça :
Or mon rect se dessine en origine 0,0. Qu'ai-je oublié ?
J'écris ça :
<br /> viewRect.origin.x = 135;<br /> viewRect.origin.y = 24; <br /> viewRect.size = NSMakeSize(220, 130);<br />
Or mon rect se dessine en origine 0,0. Qu'ai-je oublié ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Mais pourquoi t'écris pas directement NSMakeRect (x,y,w,h) ?
sinon, ça marche pas, mon rect est tjs en (0,0)...
viewRect = NSMakeRect(135, 24, 220, 130);
monInstance = [[maView alloc] initWithFrame: viewRect];
Oui et après tu fais quoi ?
Après, ds ma classe Vue :
+ ma méthode drawRect.
Que manque t-il ?
Apparemment, la taille du rect demandé marche mais pas la position...
Tu fais un addSubView quelque part ?
Pkoi un addSubView ?
Encore une fois, mon rect s'affiche à la bonne taille, simplement, la position n'est pas bonne.
C'est ce que je pressens depuis le début ;D
A qui dois-je faire un addSubView de ma vue personnelle créée ?
Parce que :
"Adds aView to the receiver?s subviews so it?s displayed above its siblings", est pas clair pour moi.
Par ailleurs, je persiste et signe en disant que je n'ai pas fait de vue ds IB...
Je ne sais pas s'il faut convertir le rectangle. Je ne pense pas, mais bon ...
Mais ça change rien... ma vue s'affichait déjà ... et là , le compilo bronche pas, mais le résultat est le même avec ou sans cette ligne !
2 eme passe nous le code.
Résumons, tu as une vue dans une fenetre ( défini dans IB )
Tu veux modifier le taille et la position de cette vue, oui ?
Que cette vue soit une sous classe ou pas ne change rien
Attention, l'origine (0,0) par défaut est en bas à gauche et est relative à la superview.
T'as raison, j'ai le don... Â :)beta:
Je résume, parce que c'est plus compliqué...
- J'ai un controller qui instancie ma vue ds son -(id)init
- Ma customView, sous-classe de NSView.
- Une autre classe qui custom ma mainWindow pour la rendre transparente avec :
Dans IB, j'ai une fenêtre mainWindow avec un outlet ds le controller. dans IB, je n'ai pas d'instance de ma vue ! Je l'instancie par le code.
Pour l'instancier, je fais dans mon controlleur :
Je répète : que j'écrive les 2 dernières lignes ou pas... l'image appelée dans ma classe MyView s'affiche en (0,0).
Voilà , tu peux meÂ
En fait, on dirait qu'il considère ma vue comme ma fenêtre, qu'il ne se soucie pas de la taille de la vue mais de la fenêtre.
Peux-tu m'expliquer par quelle miracle MyView peut s'afficher, sans l'avoir au préalable inséré dans la fenêtre
Si je suis bien, c'est ton image qui s'affiche pas la vue, pour preuve fait un fillRect, pour voir ...
Source de drawRect:
A mon avis le problème est ailleurs ???
" alt=";Et ça fait le même effet !!! Donc drawRect n'est pas appelé ! On dirait que je suis ds une sous-classe de NSObject et pas NSView ! " />
oui c'est bien ce que je pensaisÂ
Tu dois être proche du but maintenant
Je suis dans la même classe que l'autre jour... tu sais, celle où il fallait forcer l'appel à drawRect... Tu m'avais filé : [self drawRect: [self bounds]];
Mais en fait, ça l'appelle pas non plus.
Laisse tomber cette bidouille !
Et puis je ne sais plus quoi dire, je ne comprends pas ce que tu peux faire pour que ça marche pas ;D
Je crois que si tu nous files pas le projet, on va pas s'en sortir ???
En effet, il ne faut jamais appeler la méthode drawRect directement....Les méthodes de type display sont la pour ça et préparent le terrain avant d'exécuter le code de tracé dans la méthode drawRect...
Finalement j'ai une simple NSImageView ds une classe dérivée de NSObject...
J'aimerai comprendre une chose.
- Lorsque j'affiche une image dans mon ImageView depuis le awakeFromNib de la classe, je n'ai aucun pb, elle s'affiche.
- Si j'appelle depuis la même classe, depuis le awakefromnib, une méthode qui affiche l'image, elle s'affiche aussi.
- Si j'appelle depuis mon controlleur la même méthode, l'image ne s'affiche pas ds le NSImageView. Or, la mécanique tourne :
2005-03-10 11:26:07.936 soft[29394] Image : NSImage 0x34df80 Name=nono132 Size={150, 150} Reps=(
NSBitmapImageRep 0x3b4830 Size={150, 150} ColorSpace=NSCalibratedRGBColorSpace BPS=8 Pixels=150x150 Alpha=YES
)
C'est fou, ça ne marche que si j'appelle la méthode depuis le awakeFromNib ! On peut bien charger une image à n'importe quel instant non ?!
Quand tu dis que ton contrôlleur appelle la méthode, c'est avant ou après que le awakefromnib a été appelé ? Car dans le awakefromnib, tu es sûr que tes IBOutlet ont été connectées, mais sinon...