I have subclasses of NSImageView and I want to draw a border around with rounded corners. It works, but I also need to cut off the corners of the image.
Check out my screenshot:

I created this code to draw border / corners.
- (void)drawRect:(NSRect)dirtyRect { [super drawRect:dirtyRect]; NSColor *strokeColor; if(self.isSelected) strokeColor = [NSColor colorFromHexRGB:@"f9eca2"]; else strokeColor = [NSColor colorFromHexRGB:@"000000"]; [strokeColor set]; [[NSBezierPath bezierPathWithRoundedRect:NSInsetRect(dirtyRect, 1, 1) xRadius:5 yRadius:5] stroke]; }
What should I do to make an image clip?
EDIT:
Well, I fixed it, but I feel it in an ugly way to do it. Anything smarter?
NEW CODE:
- (void)drawRect:(NSRect)dirtyRect { NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:NSInsetRect(dirtyRect, 2, 2) xRadius:5 yRadius:5]; [path setLineWidth:4.0]; [path addClip]; [self.image drawAtPoint: NSZeroPoint fromRect:dirtyRect operation:NSCompositeSourceOver fraction: 1.0]; [super drawRect:dirtyRect]; NSColor *strokeColor; if(self.isSelected) { strokeColor = [NSColor colorFromHexRGB:@"f9eca2"]; } else strokeColor = [NSColor colorFromHexRGB:@"000000"]; [strokeColor set]; [NSBezierPath setDefaultLineWidth:4.0]; [[NSBezierPath bezierPathWithRoundedRect:NSInsetRect(dirtyRect, 2, 2) xRadius:5 yRadius:5] stroke]; }
source share