macOS使用CGContextRef并始终为黑色

时间:2018-11-08 08:16:22

标签: macos core-graphics nsbezierpath

我尝试使用this解决方案通过macOS上的@Johnny Rockex构建渐变圆。但是遇到了一些问题。

在@Johnny Rockex原始答案中

  

// 3.1设置

UIBezierPath * bezierPath;
CGPoint center = CGPointMake(dimension/2, dimension/2);

UIGraphicsBeginImageContextWithOptions(CGSizeMake(dimension, dimension), true, 0.0);
UIRectFill(CGRectMake(0, 0, dimension, dimension));

此方法由UIKit而非AppKit提供。所以我使用AppKit的一些方法

NSImage *contentView  =[[NSImage alloc]initWithSize:NSMakeSize(dimension, dimension)];

[contentView lockFocus];
[NSGraphicsContext currentContext].imageInterpolation = NSImageInterpolationNone;
CGContextRef gc = [[NSGraphicsContext currentContext]CGContext];
NSRectFill(CGRectMake(0, 0, dimension, dimension));

//fill Colors in bazierPath
for (int n = 0; n<numberOfColors;n++) {
   ...
}


[contentView unlockFocus];
[radialGradient setImage:contentView];

不幸的是,我最后得到了一个奇怪的结果enter image description here  enter image description here

我的颜色数组和bazierPath是正确的,但是图像的只有一小部分具有颜色。 也许不是标题名称引起的,但我在代码的其他部分找不到任何线索。

1 个答案:

答案 0 :(得分:0)

与UIBezierPath不同,appendBezierPathWithArcWithCenter以度为单位。