gpt4 book ai didi

wpf - 为什么 ActualWidth 和 ActualHeight 从 0,0 开始?

转载 作者:行者123 更新时间:2023-12-04 15:27:09 26 4
gpt4 key购买 nike

我想将 WPF 路径添加到 InkCanvas并使用选择来选择 WPF 路径。
所以,我使用这个代码。

System.Windows.Shapes.Path path = drawCanvas.Children[i] as System.Windows.Shapes.Path;    
drawCanvas.Children.RemoveAt(i);
inkCanvas.Children.Add(path);

这是输出。我必须从 0,0 中选择 WPF 路径,因为 ActualwidthActualHeight从 0,0 开始。

alt text

如何选择绝对 WPF 路径?

谢谢

编辑:

现在,我可以使用此代码绝对选择它。
System.Windows.Shapes.Path path = drawCanvas.Children[i] as System.Windows.Shapes.Path;
drawCanvas.Children.RemoveAt(i);
path.Margin = new Thickness(-getMinX(path), -getMinY(path), 0, 0);
containPath.Children.Add(path);
containPath.Width = getMaxX(path) - getMinX(path);
containPath.Height = getMaxY(path) - getMinY(path);
containPath.Margin = new Thickness(getMinX(path), getMinY(path), 0, 0);
inkCanvas.Children.Add(containPath);

最佳答案

您可以使用 UIElement.UpdateLayout MethodInkCanvas更新 FrameworkElement.ActualWidth PropertyActualHeight .见 ActualWidth关于为什么需要这样做的背景信息的链接。

编辑:

我误解了这个问题。不是那个ActualWidthActualHeight为零,但它们的值相对于 (0, 0)InkCanvas .这个问题的一个很好的解决方案是包装PathCanvas并使用 Margin 定位它像这样:

<Canvas Width="50" Height="50" Margin="200,200,0,0">
<Line
X1="0" Y1="0"
X2="50" Y2="50"
Stroke="Black"
StrokeThickness="4" />
</Canvas>

其行为如下:

alt text

这种方法的缺点是用户必须套索 Canvas这是一个矩形,而不是任意形状。尽管如此,这比必须套索对象要好得多 起源。

关于wpf - 为什么 ActualWidth 和 ActualHeight 从 0,0 开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4600772/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com