アットウィキロゴ

角丸四角形

@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