如何在WPF中覆盖一行的StrokeThickness属性

本文关键字:一行 属性 StrokeThickness WPF 覆盖 | 更新日期: 2023-09-27 17:51:12

这是过去几天一直困扰着我的问题。我在CanvasSlider上有10000+ Line对象,我用来缩放画布以创建缩放效果。一切都很好,表现也很好。

唯一困扰我的是LineStrokeThickness也缩放了。我试着将BindStrokeThickness设置为滑块值的倒数,这样每当我移动滑块时,我就会得到均匀的厚度。这是有效的,但大大降低了性能。

有没有其他适合这种情况的方法?我想让线条的宽度为零,无论我将画布缩放多远(就像在CAD程序中一样)

如何在WPF中覆盖一行的StrokeThickness属性

对于您想要达到的效果,覆盖StrokeThickness实际上并不意味着什么,因为即使ScaleTransform改变了,it's值实际上也保持不变。

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

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

示例-

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

我知道这不是一个确切的解决方案,而是一个变通。