macOS Используйте CGContextRef и всегда черный - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь использовать это решение для построения градиентного круга @Johnny Rockex на macOS. Но у меня возникли некоторые проблемы.

В оригинальном ответе @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 голосов
/ 09 ноября 2018

В отличие от UIBezierPath, appendBezierPathWithArcWithCenter измеряется в градусах.

...