gpt4 book ai didi

objective-c - NSImage +imageWithPatternColor : and NSGradient - Cocoa/Mac

转载 作者:行者123 更新时间:2023-12-03 16:43:41 25 4
gpt4 key购买 nike

我正在自定义 View 上绘制一个 NSGradient ,如下所示:

- (void)drawRect: (NSRect)dirtyRect
{
NSGradient* g = [[NSGradient alloc] initWithStartingColor: _color endingColor: [NSColor clearColor]];
[g drawInRect: [self bounds] angle: 90];
}

如果_color是普通颜色,例如[NSColor blueColor],一切都很好。问题是 _color 来自图案图像(在本例中主要是灰色,上面有一些奇特的像素),当发生这种情况时,程序会不断记录此错误:

*** -[NSGradient initWithColors:atLocations:colorSpace:]: the color NSPatternColorSpace CGImageSource=0x400367d60" )> cannot be converted into color space Generic RGB colorspace

_color = [NSColor colorWithPatternImage: [NSImage imageNamed: @"mainBG.png"]]

该图像完全不透明,是一个 png 文件。有任何想法吗?也许我应该更改文件类型?我不知道...

编辑:

如果我像这样定义_color:

_color = [[NSColor colorWithPatternImage: [NSImage imageNamed: @"mainBG.tiff"]] colorUsingColorSpace: [NSColorSpace genericRGBColorSpace]]

则不显示渐变。没有什么。就像我没有 drawRect: 方法一样。有什么想法吗?

最佳答案

NSGradient 不能将图案作为其中一种颜色。这就是异常(exception)告诉你的。它仅适用于可转换为 RGB 颜色的 NSColor。如果您想让图案褪色至清晰,则必须采用其他方法。

关于objective-c - NSImage +imageWithPatternColor : and NSGradient - Cocoa/Mac,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8674966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com