我正在开发一个应用程序,我想在其中对角元素着色,如下图所示:
我的方法是使用类似的 LinearGradient
BackgroundBrush = new LinearGradientBrush(new GradientStopCollection(){
new GradientStop(Colors.Blue, 0.5f),
new GradientStop(Colors.Red, 0.5f),
}, new Point(0, 1), new Point(1, 0));
但是,此解决方案仅适用于正方形。一旦形状变成矩形,对角线“线”就不再穿过相应的角。我确信我需要调整起点和终点,如下图所示:
我知道 A、B、C 和 D 点的位置。我需要渐变的起点和终点,即对角线的垂线与边界相交的位置。但是,我不确定如何计算这些点。
如果垂线穿过BD对角线的中点,坐标原点在A点,矩形的宽度为
a
,高度为b
,a>=b
,则F点坐标为(例如,我们可以使用标量BD 和 EF 的乘积得到这个公式)
F.x = (a*a+b*b)/(2*a)
和
E.x = a-Fx