首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSColor |从RGB值创建颜色

NSColor |从RGB值创建颜色
EN

Stack Overflow用户
提问于 2011-02-23 20:00:21
回答 3查看 13.6K关注 0票数 8

在我的应用程序中,我将RGB值作为一个无符号字符,所以它不会超过255,我使用NSColor应用程序接口创建颜色,并使用它来绘制字体和背景颜色。

这是我写的函数

代码语言:javascript
复制
+(NSColor *)getColorFromRGB:(unsigned char)r blue:(unsigned char)b green:(unsigned char)g
{
    CGFloat rFloat = r/255.0;
    CGFloat gFloat = g/255.0;
    CGFloat bFloat = b/255.0;

    //  return [NSColor colorWithCalibratedRed:((float)r/255.0) green:((float)g/255.0) blue:((float)b/255.0) alpha:1.0];
    return [NSColor colorWithCalibratedRed:rFloat green:gFloat blue:bFloat alpha:1.0];
}

在几乎所有情况下,当我使用RGB中的RGB值比较颜色时,颜色都不匹配,例如,当我通过时,

R= 187,g= 170,b= 170,

它应该绘制浅灰色,但我正在完成颜色,在这种情况下,

有人知道我做错了什么吗,

亲切的问候

罗翰

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-24 16:37:03

如果您要将输入组件传递到255之外,并且出于安全目的希望将其限制在255以内,您可以尝试这样做:

CGFloat rFloat =r%255.0;CGFloat gFloat =g%255.0;CGFloat bFloat =b%255.0;

使用% value而不是除法。

票数 5
EN

Stack Overflow用户

发布于 2011-02-24 17:34:06

代码对我来说是有效的。试着调试,你有没有记得在创建颜色后对它调用-set?以下是一些有效的示例代码:

代码语言:javascript
复制
static NSColor *colorFromRGB(unsigned char r, unsigned char g, unsigned char b)
{
    return [NSColor colorWithCalibratedRed:(r/255.0f) green:(g/255.0f) blue:(b/255.0f) alpha:1.0];
}

...

- (void)drawRect:(NSRect)rect {
    NSColor *c = colorFromRGB(50, 100, 255);
    [c set]; // <-- Important
    NSRectFill(rect);
}
票数 11
EN

Stack Overflow用户

发布于 2016-02-17 19:05:15

Swift 2中的扩展

你可以使用这个扩展,它接受来自Photoshop,Sketch等的RGB (0-255),并返回一个合适的NSColor实例(请记住,一些源代码行比这里显示的要宽):

代码语言:javascript
复制
extension NSColor {

// returns color instance from RGB values (0-255)
static func fromRGB(red: Double, green: Double, blue: Double, alpha: Double = 100.0) -> NSColor {

    let rgbRed = CGFloat(red/255)
    let rgbGreen = CGFloat(green/255)
    let rgbBlue = CGFloat(blue/255)
    let rgbAlpha = CGFloat(alpha/100)

    let color = NSColor(red: rgbRed, green: rgbGreen, blue: rgbBlue, alpha: rgbAlpha)
    return color
}

}

示例用法:

代码语言:javascript
复制
let myColor = NSColor.fromRGB(140, green: 150, blue: 155)
let mySemiTranspColor = NSColor.fromRGB(140, green: 150, blue: 155, alpha: 50)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5090603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档