- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 NSColor,我真的想要它代表的 32 位 RGBA 值。除了提取浮点分量,然后乘法和或运算以及通常做粗略的、依赖于字节序的事情之外,还有什么简单的方法可以实现这一点吗?
编辑:感谢您的帮助。真的,我所希望的是 Cocoa 函数已经做到了这一点,但我很乐意自己做。
最佳答案
另一种更强力的方法是创建一个临时的 CGBitmapContext 并填充颜色。
NSColor *someColor = {whatever};
uint8_t data[4];
CGContextRef ctx = CGBitmapContextCreate((void*)data, 1, 1, 8, 4, colorSpace, kCGImageAlphaFirst | kCGBitmapByteOrder32Big);
CGContextSetRGBFillColor(ctx, [someColor redComponent], [someColor greenComponent], [someColor blueComponent], [someColor alphaComponent]);
CGContextFillRect(ctx, CGRectMake(0,0,1,1));
CGContextRelease(ctx);
FWIW,每个组件颜色值 8 位不存在字节序问题。字节序仅适用于 16 位或更大的整数。您可以按照您想要的任何方式布置内存,但无论是大端还是小端机器,8 位整数值都是相同的。 (我相信 ARGB 是 Core Graphics 和 Core Image 的默认 8 位格式)。
为什么不只是这个?:
uint32_t r = (uint32_t)(MIN(1.0f, MAX(0.0f, [someColor redComponent])) * 255.0f);
uint32_t g = (uint32_t)(MIN(1.0f, MAX(0.0f, [someColor greenComponent])) * 255.0f);
uint32_t b = (uint32_t)(MIN(1.0f, MAX(0.0f, [someColor blueComponent])) * 255.0f);
uint32_t a = (uint32_t)(MIN(1.0f, MAX(0.0f, [someColor alphaComponent])) * 255.0f);
uint32_t value = (r << 24) | (g << 16) | (b << 8) | a;
然后你就知道它在内存中是如何布局的。
或者这个,如果你更清楚的话:
uint8_t r = (uint8_t)(MIN(1.0f, MAX(0.0f, [someColor redComponent])) * 255.0f);
uint8_t g = (uint8_t)(MIN(1.0f, MAX(0.0f, [someColor greenComponent])) * 255.0f);
uint8_t b = (uint8_t)(MIN(1.0f, MAX(0.0f, [someColor blueComponent])) * 255.0f);
uint8_t a = (uint8_t)(MIN(1.0f, MAX(0.0f, [someColor alphaComponent])) * 255.0f);
uint8_t data[4];
data[0] = r;
data[1] = g;
data[2] = b;
data[3] = a;
关于cocoa - 从 NSColor 中提取 32 位 RGBA 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/322333/
是否有 NSColor 的“免费桥接”Core Foundation 对应版本? CGColorRef 似乎不喜欢 NSColor ,反之亦然? 基本上,我们希望从存储实际 r/g/b/a 值的 C+
我扩展 NSColor 以添加类方法 + (NSColor*) initWithHTMLString: (NSString*) rgb 我设置 NSWindow 对象的背景颜色: [self.wind
我正在尝试将 NSColor 的实例保存到如下文件中: writeF(node.lineColour.hueComponent) writeF(node.lineColour.saturati
我正在使用 sip 开发者工具从此图像中获取特定颜色: http://dribbble.com/shots/1277834-Login-Thumb/attachments/176317 (右侧底部灰色
在我的 View 背景中,我绘制了浅蓝色。在中间,我有一个方形盒子,里面应该有更浅的灰色,透明度为 20%。但由于某种原因,透明度位于黑色背景而不是蓝色背景之上。如果我没说清楚,我很抱歉。 最佳答案
我正在尝试在 NSView 中绘制内部阴影。阴影本身不是问题,但颜色设置让我发疯:/ #define ShadowBlurRadius 10.0 #define SRGB (CGFloat [4]){
我不太明白为什么 NSColor 的色调组件会表现得像它那样。这里有一些奇怪的事情: NSColor *c = [NSColor colorWithCalibratedHue:0.1
我知道 Cocoa 为您提供了 whiteColor、blackColor、darkGrayColor,但是它们也有 Apple 颜色面板中的颜色吗?有“雪”、“钨”、“钢”、“锡”等颜色?或者我应该
我正在实现一个自定义 NSMenuItem View shows a highlight当用户将鼠标悬停在其上时。为此,代码在将 [NSColor selectedMenuItemColor] 设置为
我正在寻找一种反转任意 NSColor 的方法在运行时更改值,并且似乎没有任何内置方法可以执行此操作。 我将使用类别来扩展 NSColor,如下所示: NSColor * invertedColor
我可以在Xcode Assets 管理中创建这样的颜色,当然需要10.13以上才能应用。 我目前正在向我的应用程序添加主题功能,我认为编写一个自动适应明亮或黑暗模式的 NSColor 对象可能会有所帮
我需要保证颜色有足够的饱和度。 我对 NSColor 做了这个扩展,但我的测试给了我奇怪的值:tempColor 似乎总是有很多饱和度。 所以基本上我的函数总是返回 self? 我的错误在哪里? 我也
我创建了 NSWindow 并将其背景色设置为绝对蓝色 (#0000FF)。但是当窗口被渲染时,颜色比它应该的颜色“更亮”(#0F3FFB)。 class LilWindow: NSViewContr
我在将十六进制代码转换为 NSColor 时遇到了一些问题。请注意,这是针对 Mac 应用程序的(因此使用 NSColor 而不是 UIColor)。这是我到目前为止的代码: - (NSColor *
我正在尝试通过在 NSViewController 中切换暗/亮模式来更改图像的颜色。 我正在使用此代码更改图像的颜色: - (NSImage *)image:(NSImage *)image wit
好吧,长话短说: 我正在使用(嵌入到 bundle 中)FontAwesome 我将它用作一些自定义 NSButton 中的字体 在 NSButton 子类中,我想为它们着色,就像 Xcode 选项卡
我正在使用此代码: #define MAATTACHEDWINDOW_DEFAULT_BACKGROUND_COLOR [NSColor colorWithCalibratedRed:59 green
我正在学习教程,下面的方法属于 NSview 的子类。它只是绘制一个红色矩形。我只是不明白它是如何做到的。我不明白设置消息在 [bkgColor set] 中的作用以及它如何影响背景颜色? - (vo
NSAnimation 不允许我对 NSColor 更改进行动画处理。我该怎么做? 最佳答案 您可以使用blendedColorWithFraction:ofColor:。在您的动画方法中(无论哪种方
是否可以将 NSGradient 转换为 NSColor - (void) viewWillDraw { NSGradient *grad = [[NSGradient alloc] init
我是一名优秀的程序员,十分优秀!