2016-05-18 5 views
2

NSWindowを作成し、背景色を絶対に青色にしました(#0000FF)。しかし、ウィンドウがレンダリングされるとき、その色は、(#0F3FFB)よりも「より軽く」なります。Swift - レンダリング時にNSColorがより明るくなる理由

class LilWindow: NSViewController { 
    override func viewDidLoad() { 
     self.view.window?.backgroundColor = 
      NSColor.init(red: 0, green: 0, blue: 1, alpha: 1) 


} 

誰になぜそれが起こっているのか、これを修正する方法を知っていますか? (スクリーンショット添付)

enter image description here

+0

代わりに 'NSColor.init(calibratedRed:green:blue:alpha:)'を試してみよう。 –

+0

@KenThomases nope、まだ同じ結果 – euvl

+3

色は異なっていますが、その値はどのくらい正確に決定しましたか?その仕組みはカラープロファイル対応ですか?どのプロファイルが、それが相対的に測定していると言っていますか? (色の値は、プロファイルを除いて実際には無意味です。)また、正しいと思われる背景を作るためにあなたは何を使いましたか? –

答えて

1

さて、コードをいじる時間のカップルの後にそうと@KenThomasesが、私はあなたがあなたのRGBの色がNSImagesNSWindowsに正しく見えるしたい場合は、あなたが変換しなければならないことを考え出し助けますこれをNSDeviceRGBColorSpace色空間に変換します。これを行うには、単純な関数を書いた:

func toScreenColor(color:NSColor) -> NSColor { 
    var red: CGFloat = 0, green: CGFloat = 0, blue: CGFloat = 0, alpha: CGFloat = 0 

    color 
    .colorUsingColorSpaceName(NSCalibratedRGBColorSpace)! 
    .getRed(&red, green: &green, blue: &blue, alpha: &alpha) 

    return NSColor(deviceRed: red, green: green, blue: blue, alpha: alpha) 
} 
関連する問題