Arrondir les bords d'une image

09:08 modifié dans API AppKit #1
Bonsoir à  tous,

Je cherche désespérement un moyen d'arrondir les bords d'une image très légèrement et sans bordure. Comme le fait très bien Pixelmator.
Pour l'instant je dessine une bordure au bezierpath car je n'ai pas trouvé de filtre CoreImage pour ça.. étonnant d'ailleurs.

Merci d'avance pour vos réponses  ;)

Réponses

  • AliGatorAliGator Membre, Modérateur
    novembre 2008 modifié #2
    Tu ne peux pas créer un BezierPath de la forme d'un rectangle arrondi justement ([tt]+bezierPathWithRoundedRect: xRadius: yRadius:[/tt])... et ensuite le remplir ([tt]fill[/tt])... et enfin l'utiliser comme couche alpha de ton image ??!

    Sinon toi qui faisait joujou avec CoreAnimation il me semble que quand tu définis un CALayer tu peux définir un radius pour les bords, je sais pas dans ton contexte si ça colle avec ta situation ?
  • AliGatorAliGator Membre, Modérateur
    novembre 2008 modifié #3
    *tilt*
    J'ai plus simple : changer la clipping region de ton GraphicContext ;)
    Modifying the clipping region
    Donc au moment où tu veux dessiner ton image avec ses bords arrondis à  l'écran, tu sauves ton GraphicContext, tu modifies le clipPath, tu dessines ton image, et tu restaures le GC ;)

    NSImage* image = ... // ton image<br />const CGFloat kRadius = 5.0f;<br />// la frame indiquant où tu veux dessiner ton image (ici non déformée car frame de même taille que l&#39;image) dans ta view<br />NSRect imageFrame = NSMakeRect( ... , ... , [image size].width, [image size].height);<br /><br />[NSGraphicsContext saveGraphicsState]; // sauver le contexte, y compris le clipping<br />[[NSBezierPath bezierPathWithRoundedRect:imageFrame xRadius: kRadius yRadius: kRadius] addClip]; // ajout du clipping arrondi<br />[image drawInRect:imageFrame fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0]; // Dessiner l&#39;image<br />[NSGraphicsContext restoreGraphicsState]; // restaurer le contexte, en particulier le clipping normal
    
  • 09:08 modifié #4
    Excellent, et super simple !
    Merci ali !
Connectez-vous ou Inscrivez-vous pour répondre.