【发布时间】:2019-02-20 06:11:27
【问题描述】:
我正在尝试在 NSView 中绘制内部阴影。阴影本身不是问题,但颜色设置让我抓狂:/
#define ShadowBlurRadius 10.0
#define SRGB (CGFloat [4]){184.0, 184.0, 184.0, 1.0}
@implementation SWShadowedView
- (void)drawRect:(NSRect)dirtyRect {
NSGraphicsContext *context = [NSGraphicsContext currentContext];
[context saveGraphicsState];
[context setCompositingOperation:NSCompositePlusDarker];
NSBezierPath *path = [NSBezierPath bezierPathWithRect:NSMakeRect(0, dirtyRect.size.height -ShadowBlurRadius, self.superview.frame.size.width, ShadowBlurRadius)];
[[NSColor whiteColor] setStroke];
NSShadow * shadow = [[NSShadow alloc] init];
NSColorSpace *colorSpace = [NSColorSpace sRGBColorSpace];
NSColor *color = [NSColor colorWithColorSpace:colorSpace components:SRGB count:4];
[shadow setShadowColor:color];
[shadow setShadowBlurRadius:ShadowBlurRadius];
[shadow set];
[path stroke];
[context restoreGraphicsState];
[super drawRect:dirtyRect];
}
@end
如果我用 [NSColor redColor] 替换阴影颜色,它可以工作,但颜色错误。这是我从以下位置获得 sRGB 的:link
将 sRGB 转换为 NSColor 的方法取自这里的另一篇文章,但显然它不起作用。
最好的问候
【问题讨论】: