如何在WPF中覆盖Line的StrokeThickness属性

时间:2014-03-20 09:05:56

标签: c# wpf binding line

这是过去几天一直存在的问题。我在LineCanvas上有10000多个Slider个对象,用于缩放画布以创建缩放效果。 一切都很好,性能也很棒。

唯一困扰我的是StrokeThickness的{​​{1}}也会缩放。我尝试将Line Bind移动到滑块的倒数值,这样每当我移动滑块时,我都会获得均匀的厚度。这有效但却大大降低了性能。

还有其他方法适合这种情况。无论我在多大程度上缩放画布(比如在CAD程序中),我都希望有一个零宽度的线条粗细。

1 个答案:

答案 0 :(得分:1)

对于您想要达到的效果,覆盖StrokeThickness并不构成任何意义,因为即使更改了ScaleTransform,它的值实际上也保持不变。 / p>

您尝试过的方法 - Bind StrokeThickness与滑块值的倒数 - 似乎是最合理的方法。要提高性能,不要将StrokeThickness直接设置为与滑块值相反,而是将其设置为视图模型上的另一个属性。

然后,在滑动完成的情况下,将该属性的值设置为StrokeThickness的倒数。

示例 -

private void OnSlidingComplete(object sender, EventArgs e)
{
    LineStrokeThickness = GetInverseOfZoomValue();
}

我知道这不是一个解决方案,而是一种解决方法。