That's make sense. Do you know any workaround? I have to draw the background color because: 1) the user could choose to see a background color on the area not covered by the image. Let's imagine a circle divided in 3 slices by two vertical lines. In the middle we have the image, and on the left and right areas we see the color. So, at the top and bottom of the image I see that bad blue curved border. 2) In case of shadow, if I do not fill with a color before clipping the path I can't get the shadow out of the path. If I do
CGContextSetShadowWithColor... [fillPath addClip]; [image drawInRect:fillBounds fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0]; I can't get the shadow out of the fillPath. Instead If I do: CGContextSetShadowWithColor... [aBlueColor set]; [fillPath fill]; RemoveShadow [fillPath addClip]; [image drawInRect:fillBounds fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0]; The problem is that I must clip the path before drawing the image, and as result the image itself can't project shadow outside the clipped path. I am puzzled. Regards -- Leonardo > Da: Kyle Sluder <k...@ksluder.com> > Data: Thu, 6 Mar 2014 09:02:00 -0800 > A: Leonardo <mac.iphone....@gmail.com> > Cc: "cocoa-dev@lists.apple.com" <cocoa-dev@lists.apple.com> > Oggetto: Re: Draw image within a NSBezierPath with no border > > On Mar 6, 2014, at 8:34 AM, Leonardo <mac.iphone....@gmail.com> wrote: >> >> Hi, I have an oval NSBezierPath path. I fill it with a blue color, >> then I draw an image within the same path. And I can still see a blue tiny >> border around the image. I would expect the color be never visible since the >> image covers the whole area. That's my code: >> >> fillPath = [NSBezierPath bezierPathWithOvalInRect:fillBounds]; >> [aBlueColor set]; >> [fillPath fill]; >> [fillPath addClip]; >> [image drawInRect:fillBounds fromRect:NSZeroRect >> operation:NSCompositeSourceOver fraction:1.0]; >> >> Even if I draw the image in a bigger rect, the blue border is still there. >> What do I miss? > > Due to antialiasing, the fringes of your mask have alpha < 1. > > Let¹s say there¹s a pixel on the fringe of your mask that winds up with alpha > 0.5. Using your code, that pixel's final color will be 0.5 * (0.5 * Original > background color + 0.5 * blue) + 0.5 * (color from image). > > --Kyle Sluder _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com