Хороший вопрос, но я думаю, что это невозможно.Если в ControlTemplate есть какое-то наложение, вы не можете сформулировать функцию, которая вычисляет более темный цвет, который в итоге получится как предполагаемый цвет.
например, когда вы вводите красный цвет: 255,0,0
вы получаете 255,153,153
Теперь функция, которая должна быть применена к исходному цвету, должна затемнять красный, это, конечно, можно сделать только в красном канале, поскольку зеленый и синий уже равны нулю.Однако проблема не в красном канале (который заканчивается как 255 и, следовательно, не подвержен влиянию), поэтому любые изменения в нем будут только ухудшать цвет, а не затемнять его.
Править: Чтобы сделать это немного более математическим, функция, применяемая прозрачностью выделения:
f (x) = 0,4x + 153
Если вы примените это ко всем каналам вашего цвета, вы увидите, что это действительно так.Теперь, как мы получаем значения, которые мы хотим?Очень просто, мы инвертируем функцию:
f ^ (- 1) (x) = -2,5 (153,0 - x)
Отлично!Теперь давайте применим это к вашему цвету:
R: -130.0G: 0B: 140
Хм, не так уж и много, как мне кажется.
Это отрицательное значение, именно поэтому это не всегда возможно, так как каждый цвет, имеющий компоненты ниже 153
,необратимый.