2012-05-24 53 views
2

iOS如何計算工具欄漸變?我希望能夠設置我的窗口的背景顏色,以匹配漸變中的最終顏色,使其看起來淡入視圖中。問題是,結束色調似乎取決於基本的顏色,我找不到一致的公式,產生匹配。iOS如何計算工具欄漸變?

回答

2

我最好的近似值:

(r', g', b') = (f(r), f(g), f(b)) where f(x) = 0.001468x^2 + 0.647295x + 4.04025 

如何推導出: 讓c = (r, g, b) = base color。 讓c' = (r', g', b') = resulting color。 我讓c = #944321 = (148, 67, 33)並得到c' = #84361b = (132, 54, 27)

這給了我三個方程求解:

f(148) = 132 
f(67) = 54 
f(33) = 27 

因爲我們有三個等式,讓f(x)與三個未知數的多項式:

f(x) = Ax^2 + Bx + C 

從那裏,我就做了一個3×4矩陣我計算器,輸入x的不同值,並在矩陣上執行一個減少行的梯隊,解決方案是(0.001468, 0.647295, 4.04025)。我將這些插入到A,B和C中,並獲得了前述的f(x)

下面是執行計算的快速Python腳本。

用法:./script.py rrggbb

#!/usr/bin/env python 

import sys 

def end_color(color): 
    def f(x): 
     return int(round(0.001468 * x ** 2 + 0.647295 * x + 4.04025)) 
    rgb = (int(color[i:i+2], 16) for i in xrange(0, 6, 2)) 
    return ''.join(hex(f(n))[2:] for n in rgb) 

for color in sys.argv[1:]: 
    print end_color(color) 

我與顏色#9e3393測試這一點,得到了#8f2983,生產同一種顏色的iOS:

即使它有時不能確切它可能會無法分辨因爲您在漸變的末尾使用顏色。希望有所幫助!

+0

哇。哇,哇。幹得不錯,那正是我需要的! – ekinnear