小编jop*_*jip的帖子

sRGB到NSColor

我试图在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
Run Code Online (Sandbox Code Playgroud)

如果我用[NSColor redColor]替换阴影颜色,它可以使用但颜色错误.这是我从以下地方获得sRGB的地方:link

将sRGB转换为NSColor的方法取自此处的另一篇文章,但显然它不起作用.

最好的祝福

cocoa nsview nscolor

2
推荐指数
1
解决办法
1910
查看次数

标签 统计

cocoa ×1

nscolor ×1

nsview ×1