0

我有一个自定义 NSView 与我的 xib 中的自定义视图链接。

  1. 视图中的代码:

    @implementation GDStatusPopoverActivateButton
    - (void)drawRect:(NSRect)dirtyRect {
        NSBezierPath* path = [GDAssets getPathForTimesIconWithRect: self.bounds];
        NSAffineTransform* transformer = [[NSAffineTransform alloc] init];
        [transformer scaleBy: 0.25];
        [path transformUsingAffineTransform: transformer];
        [[NSColor blackColor] setFill];
        [path fill];
        [super drawRect: dirtyRect];
    }
    @end
    
  2. 路径代码(GDAssets getPathForTimesIconWithRect 调用)。

    + (NSBezierPath *) getPathForTimesIconWithRect: (NSRect) rect {
        NSBezierPath* timesPath = [NSBezierPath bezierPathWithRect: rect];
        [timesPath moveToPoint: NSMakePoint(128, 240.48)];
        [timesPath curveToPoint: NSMakePoint(15.52, 128) controlPoint1: NSMakePoint(65.88, 240.48) controlPoint2: NSMakePoint(15.52, 190.12)];
        [timesPath curveToPoint: NSMakePoint(128, 15.51) controlPoint1: NSMakePoint(15.52, 65.88) controlPoint2: NSMakePoint(65.88, 15.51)];
        [timesPath curveToPoint: NSMakePoint(240.48, 128) controlPoint1: NSMakePoint(190.12, 15.51) controlPoint2: NSMakePoint(240.48, 65.88)];
        [timesPath curveToPoint: NSMakePoint(128, 240.48) controlPoint1: NSMakePoint(240.48, 190.12) controlPoint2: NSMakePoint(190.12, 240.48)];
        [timesPath closePath];
        [timesPath moveToPoint: NSMakePoint(256, 128)];
        [timesPath curveToPoint: NSMakePoint(128, 0) controlPoint1: NSMakePoint(256, 57.31) controlPoint2: NSMakePoint(198.69, 0)];
        [timesPath curveToPoint: NSMakePoint(0, 128) controlPoint1: NSMakePoint(57.31, 0) controlPoint2: NSMakePoint(0, 57.31)];
        [timesPath curveToPoint: NSMakePoint(128, 256) controlPoint1: NSMakePoint(0, 198.69) controlPoint2: NSMakePoint(57.31, 256)];
        [timesPath curveToPoint: NSMakePoint(256, 128) controlPoint1: NSMakePoint(198.69, 256) controlPoint2: NSMakePoint(256, 198.69)];
        [timesPath closePath];
        return timesPath;
    }
    
  3. 西布:

http://i.imgur.com/xGeC1yO.png

结果:

http://i.imgur.com/9kpkVxy.png

4

1 回答 1

0

这条线是罪魁祸首

NSBezierPath* timesPath = [NSBezierPath bezierPathWithRect: rect];

解决方案:

NSBezierPath* timesPath = [NSBezierPath bezierPath];
于 2014-08-22T15:48:44.143 回答