Antialias dans une NSImageView
UniX
Membre
Salut.
Les NSImageView affiche les images sans utiliser l'antialias. Résultat, si on veut afficher une image de grandes dimensions dans une petite NSImageView, c'est pixélisé et moche .... >:(
J'ai tenté de créer une sous-classe de NSImageView, et de surclasser la méthode drawRect comme suit :
Mais c'est pas mieux .... :P
Comment je peux m'y prendre ?
Les NSImageView affiche les images sans utiliser l'antialias. Résultat, si on veut afficher une image de grandes dimensions dans une petite NSImageView, c'est pixélisé et moche .... >:(
J'ai tenté de créer une sous-classe de NSImageView, et de surclasser la méthode drawRect comme suit :
- (void)drawRect:(NSRect)rect <br />{<br /> [NSGraphicsContext saveGraphicsState];<br /> [[NSGraphicsContext currentContext] setImageInterpolation:NSImageInterpolationHigh];<br /> [[NSGraphicsContext currentContext] setShouldAntialias:YES];<br /> [super drawRect: rect];<br /> [NSGraphicsContext restoreGraphicsState]; <br />}
Mais c'est pas mieux .... :P
Comment je peux m'y prendre ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Jte conseille de créer une nouvelle image à partir de l'originale. En fait, tu redimensionnes l'originale proportionnellement à la taille de ton image view.Ensuite tu retraces une nouvelles image (voir le code de bru) à partir de l'image originale redimensionnée (ne pas oublier le setScaleWhenResized de l'image à YES)
Bizarrement, meme sans le craphic context, tu arrives à avoir une image bcp moins pixellisé mais pas aussi jolie qu'avec l'antialiasing.
J'ai pensé à ton idée de créer une image antialiasée aux dimensions de la vue, mais comme je veux faire ça à plusieurs endroits, ça sera ma solution de replis. Je préfèrerais pouvoir créer une NSImageView custo, que je n'aurais plus qu'à placer aux différents endroits.