好问题,但我认为这是不可能的。如果 ControlTemplate 内有一些覆盖,则无法制定一个函数来计算较暗的颜色,然后该颜色最终将成为预期的颜色。
例如,当您输入红色时,即:255,0,0您得到255,153,153,现在需要应用于初始颜色的函数需要使红色变暗,这当然只能在红色通道中完成,因为绿色和蓝色已经为零。然而,问题不在于红色通道(最终为 255,因此不受影响),因此对其进行任何更改只会进一步降低颜色饱和度,而不是使其变暗。
编辑:为了使其更数学化,选择的透明度应用的函数是:
f(x) = 0.4x + 153
如果您将其应用于颜色的所有通道,您会发现情况确实如此。现在我们如何获得我们想要的值呢?很简单,我们反转函数,就是这样:
f^(-1)(x) = -2.5(153.0 - x)
伟大的!现在让我们将其应用到您的颜色上:
右:-130.0
右:0
右:140
嗯,我想毕竟不是那么好。
这个负值正是这并不总是可能的原因,具有以下成分的每种颜色153都是不可逆的。