iOS はツールバーのグラデーションをどのように計算しますか? ウィンドウの背景色をグラデーションの最後の色と一致するように設定して、ビューにフェードインするようにしたいと思います。問題は、ベースカラーによって最終色合いが異なるように見え、一致する一貫した処方が見つからないことです.
質問する
342 次
1 に答える
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)
。
これにより、解くべき 3 つの方程式が得られます。
f(148) = 132
f(67) = 54
f(33) = 27
3 つの方程式がf(x)
あるので、 を 3 つの未知数を持つ多項式とします。
f(x) = Ax^2 + Bx + C
そこから、電卓で 3x4 の行列を作成し、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 が生成されました。
$ ./script.py 9e3393
8f2983
正確ではない場合でも、グラデーションの最後に色を使用しているため、おそらく見分けがつかない場合があります. それが役立つことを願っています!
于 2012-07-07T06:21:09.553 に答える