良い質問ですが、これは不可能だと思います。ControlTemplate 内にオーバーレイがある場合、より暗い色を計算する関数を定式化することはできず、最終的に意図した色になります。
たとえば、赤を入力すると、次の255,0,0
よう255,153,153
になります。最初の色に適用する必要がある関数は、赤を暗くする必要があります。もちろん、緑と青はすでにゼロであるため、これは赤チャンネルでのみ実行できます。ただし、問題は赤のチャネルではなく (最終的に 255 になるため、影響を受けません)、それを変更しても、色を暗くするのではなく、色の彩度を下げるだけです。
編集:これをもう少し数学的にするために、選択の透明度によって適用される関数は次のとおりです。
f(x) = 0.4x + 153
これを色のすべてのチャネルに適用すると、実際にそうであることがわかります。では、必要な値を取得するにはどうすればよいでしょうか。非常に単純です。関数を反転します。これは次のとおりです。
f^(-1)(x) = -2.5(153.0 - x)
すごい!それをあなたの色に適用しましょう:
R: -130.0
G: 0
B: 140
うーん、結局のところ、それほど素晴らしいことではないと思います。
この負の値がまさに、これが常に可能であるとは限らない理由です。以下のコンポーネントを持つすべての色は元に戻すこと153
ができません。