NSCalibratedBlackColorSpace的非弃用替换?

时间:2010-04-10 13:03:36

标签: objective-c macos cocoa quartz-graphics deprecated

我正在实现自己的NSBitmapImageRep(绘制PBM图像文件)。为了绘制它们,我使用NSDrawBitmap()并将NSCalibratedBlackColorSpace传递给它(因为黑色为1,白色为0)。

麻烦的是,我收到以下警告:

warning: 'NSCalibratedBlackColorSpace' is deprecated

然而,我找不到一个好的替代品。 NSCalibratedWhiteColorSpace给了我一个倒置的图像,似乎没有办法让NSDrawBitmap()使用我可以创建的CGColorSpaceRefNSColorSpace作为{{的自定义等价物1}}。

我找到了一种(hacky)关闭警告的方法(所以我仍然可以建立无警告,直到替换变得可用)只需传递NSCalibratedBlackColorSpace而不是符号常量,但我会而是应用正确的解决方案。

有人有想法吗?


好的,所以我试过

@"NSCalibratedBlackColorSpace"

但它仍然倒置了。我也试过在上面交换黑/白,没改变一件事。我是否误解了CIE三刺激色值的事情?大多数文档似乎都假设你知道它是什么或者是否愿意改变一个矩阵数学以找出什么颜色是什么。或者其他什么。

我有点想避免必须触摸所有数据并将其反转,但现在它似乎是最好的选择(/我解包他的循环和xor运算符)。

3 个答案:

答案 0 :(得分:1)

似乎刚刚被删除而没有替换。修复可能只是反转所有位并使用NSCalibratedWhiteColorSpace

答案 1 :(得分:1)

我创建a calibrated gray CGColorSpace,交换白点和黑点,然后create a CGImage创建栅格数据和颜色空间。如果你想要一个位图图像代表,那么很容易create one of those around the CGImage

答案 2 :(得分:1)

另一种方式(因为you need to support planar datayou can require 10.6)将在NSCalibarated White ColorSpace中create an NSBitmapImageRep in the usual way,然后replace its color space与{{{} 3}}我在an NSColorSpace created with the CGColorSpace中建议的创作。