角丸四角形
@interface NSBezierPath (ExtraShapes)
- (void)appendBezierPathWithRoundingRect:(NSRect)rect radius:(CGFloat)radius;
+ (NSBezierPath *)bezierPathWithRoundingRect:(NSRect)rect radius:(CGFloat)radius;
@end
@implementation NSBezierPath (ExtraShapes)]
- (void)appendBezierPathWithRoundingRect:(NSRect)rect radius:(CGFloat)radius
{
CGFloat x1 = rect.origin.x;
CGFloat x2 = rect.origin.x + radius;
CGFloat x3 = rect.origin.x + rect.size.width - radius;
CGFloat x4 = rect.origin.x + rect.size.width;
CGFloat y1 = rect.origin.y;
CGFloat y2 = rect.origin.y + radius;
CGFloat y3 = rect.origin.y + rect.size.height - radius;
CGFloat y4 = rect.origin.y + rect.size.height;
[self moveToPoint:NSMakePoint(x1, y2)];
[self lineToPoint:NSMakePoint(x1, y3)];
[self appendBezierPathWithArcFromPoint:NSMakePoint(x1, y4) toPoint:NSMakePoint(x2, y4) radius:radius];
[self lineToPoint:NSMakePoint(x3, y4)];
[self appendBezierPathWithArcFromPoint:NSMakePoint(x4, y4) toPoint:NSMakePoint(x4, y3) radius:radius];
[self lineToPoint:NSMakePoint(x4, y2)];
[self appendBezierPathWithArcFromPoint:NSMakePoint(x4, y1) toPoint:NSMakePoint(x3, y1) radius:radius];
[self lineToPoint:NSMakePoint(x2, y1)];
[self appendBezierPathWithArcFromPoint:NSMakePoint(x1, y1) toPoint:NSMakePoint(x1, y2) radius:radius];
[self closePath];
}
+ (NSBezierPath *)bezierPathWithRoundingRect:(NSRect)rect radius:(CGFloat)radius
{
NSBezierPath *path = [NSBezierPath bezierPath];
[path appendBezierPathWithRoundingRect:rect radius:radius];
return path;
}
@end
最終更新:2007年04月08日 12:56