[Résolu] Zoomer sur une NSImage

berfisberfis Membre
mai 2013 modifié dans API AppKit #1

Bonjour,


 


J'aimerais utiliser une animation pour faire grossir une image en partant d'un rectangle de départ et d'arrivée, que je connais (image jointe *Zoom").


 


Mais si je fais comme ça:



NSRect final = myView.frame;
NSRect debut = [myMatrix cellFrameAtRow:xx column:yy];
debut = [myMatrix convertRect: debut toView:myView];
[myView setFrame:debut];
[[[myView] animator ]setFrame:final];

L'image affichée dans myView (une NSImageView) n'est pas zoomée, à  la place j'ai une sorte de transition: l'image a sa taille normale mais elle est progressivement dévoilée (image jointe "Transition").


 


Quand j'anime le bounds, c'est pire: au lieu d'avoir un zoom avant... j'ai un zoom arrière (l'image commence énorme et finit à  la taille normale).


 


Bref, je me suis englué dans les coordonnées. Une idée? D'avance merci.


Mots clés:

Réponses

  • CéroceCéroce Membre, Modérateur

    Essaie de changer l'imageScaling en NSScaleProportionally.


    Il n'y a pas de raison que ça ne fonctionne pas.


  • berfisberfis Membre
    mai 2013 modifié #4


    Essaie de changer l'imageScaling en NSScaleProportionally.


    Il n'y a pas de raison que ça ne fonctionne pas.




    En effet ça marche (et avec NSImage). Mais c'est bizarre, j'ai pourtant défini cette caractéristique dans IB, et ça ne fonctionne que si je "confirme par code", sinon l'image se comporte bizarrement (une image de 72K ne peut pourtant pas bouleverser le fonctionnement de la mémoire à  ce point... non?)


     


    Merci à  vous deux -- @mpergand: déjà  travaillé avec IKImageView?


  • mpergandmpergand Membre
    mai 2013 modifié #5

    NSImageView ne permet pas de zoomer à  l'intérieur de l'image, enfin si on peut, mais il faut mettre l'imageView dans un ScrollView et changer la taille de l'imageView.


    IKImageView fait tout ça, tout seul comme un grand :)


     


    Maintenant, si tu veux juste que l'image s'adapte à  la taille de la vue, NSImageView en parfait pour ça.


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