Re: Draw rounded NSImage
Re: Draw rounded NSImage
- Subject: Re: Draw rounded NSImage
- From: Gideon King <email@hidden>
- Date: Mon, 7 Dec 2009 14:03:23 +1000
Your code restores the graphics state, which will remove your rounded rect clipping path, before you draw the image.
If you draw the image before restoring the graphics state, you should be OK.
Also you should not need to explicitly set the winding rule.
HTH
Gideon
On 05/12/2009, at 7:22 AM, John Wright wrote:
> I am trying to create a NSImage or NSImageCell with rounded corners
> inside a NSTableView. I can't get anything to work. Here is the best I
> have so far inside my custom NSCell:
>
> - (void)drawInteriorWithFrame:(NSRect)frame inView:(NSView *)controlView {
> if (thumbnailLink) {
> NSURL *url = [NSURL URLWithString:thumbnailLink];
> if (url) {
> NSRect imageFrame = [self _imageFrameForInteriorFrame:frame];
> NSImage *image = [[NSImage alloc] initWithContentsOfURL:url];
> [image setScalesWhenResized:YES];
> [image setSize:NSMakeSize(IMAGE_HEIGHT, IMAGE_WIDTH)];
>
> [NSGraphicsContext saveGraphicsState];
> imageFrame = NSInsetRect(imageFrame, 1, 1);
> NSBezierPath *clipPath = [NSBezierPath
> bezierPathWithRoundedRect:imageFrame cornerRadius:5.0];
> [clipPath setWindingRule:NSEvenOddWindingRule];
> [clipPath addClip];
> [NSGraphicsContext restoreGraphicsState];
> [image drawInRect:imageFrame fromRect:NSMakeRect(0, 0,
> 0, 0) operation:NSCompositeSourceIn fraction:1.0];
> [image release];
> }
> }
> ...
>
> Any ideas on how to do this?.
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden