如何在WPF中覆盖一行的StrokeThickness属性
本文关键字:一行 属性 StrokeThickness WPF 覆盖 | 更新日期: 2023-09-27 17:51:12
这是过去几天一直困扰着我的问题。我在Canvas
和Slider
上有10000+ Line
对象,我用来缩放画布以创建缩放效果。一切都很好,表现也很好。
唯一困扰我的是Line
的StrokeThickness
也缩放了。我试着将Bind
的StrokeThickness
设置为滑块值的倒数,这样每当我移动滑块时,我就会得到均匀的厚度。这是有效的,但大大降低了性能。
有没有其他适合这种情况的方法?我想让线条的宽度为零,无论我将画布缩放多远(就像在CAD程序中一样)
对于您想要达到的效果,覆盖StrokeThickness
实际上并不意味着什么,因为即使ScaleTransform
改变了,it's值实际上也保持不变。
您尝试的方法- Bind
StrokeThickness
到滑块值的倒数-似乎是最合理的方法。为了提高性能,不要将StrokeThickness
直接设置为Slider值的倒数,而是将其设置为视图模型上的另一个属性。
然后,在滑动完成的情况下,将该属性的值设置为StrokeThickness
的倒数。
示例-
private void OnSlidingComplete(object sender, EventArgs e)
{
LineStrokeThickness = GetInverseOfZoomValue();
}
我知道这不是一个确切的解决方案,而是一个变通。