0

私はこれを正しくやっていますか?たとえばRGB(165,165,165)、HSL(Get (0, 0, 64.7)) に変換します。実際に xml を解析すると、そこに lumMod = '60 000' と lumOff = '40 000' という 2 つのパラメーターがあります (これは、L コンポーネントに 0.6 を掛けてから、L コンポーネントに 0.4 を加算する必要があることを意味します)

オーケーnew_l = 0.647*0.6 + 0.4 = 0.7882

そして今、HSL(0, 0, 78.8) からRGB(198, 198, 198)

実際には、RGB(183,183,183) を取得する必要があります。正解だから。どこが間違っていたのですか?

4

1 に答える 1

0

一晩中デバッグした後、私は私の質問に対する答えを見つけました。

このトピックの King Salemno に感謝します

チャートが実行しているアルゴリズムでは、次の手順が実行されます。

  1. 関心のある基本色の RGB を取得します (例: アクセント 3)

  2. HSLに変換

  3. L 成分に lumMod を掛けます。

  4. L 成分に lumOff を追加する

  5. RGB に戻す

同じロジックが satMod、satOff、hueMod、および hueOff にも適用されます。

しかし、(255, 255, 255) や (123, 123, 123) のように、すべてのレベルで 1 つの値しか持たない rgb-color の場合、lumMod = lumMod - 0.04(+-0.005)lumMod を lumoff パラメータに変更して同じことを行います。

したがって、RGB(165,165,165) があり、それを HSL(0, 0, 0.647) に変換するとします。変更後HSL.L = HSL.L*(lumMod - 0.04) + (lumOff - 0.04) = 0.718 、HSL(0, 0, 0.718) から RGB(183,183,183) に変換し直しました

なぜこのように機能するのかわかりませんが、機能します。私はそれを見つけようとしました。

于 2014-02-22T13:02:40.240 に答える