NSView에서 내부 그림자를 그리려고합니다. 그림자 자체는 문제가되지 않지만 색상 설정은 나를 미치게된다/sRGB to NSColor
#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로 변환하는 방법은 여기에서 다른 게시물에서 가져 왔지만 분명히 작동하지 않습니다.
안부
덕분에, 나는 안 미안 해요 당신의 대답을 밀어 내기에 충분한 명성을 얻으십시오. – jopjip
@jopjip 아무런 문제가 없지만, 이것이 당신을 도왔다 고 다행입니다. –
이것은 *** 아닙니다 *** sRGB 값을 사용하여 색상을 생성하는 것과 같습니다. 이것은 현재 보정 된 RGB 색상 공간을 사용하여 색상을 생성합니다. 이는 분명 sRGB로 보장되지 않습니다. sRGB 값을 입력하면 올바른 색상을 얻지 못합니다. –