Hon*_*Lim 6 wpf selection inkcanvas actualwidth actualheight
我想添加WPF路径InkCanvas并使用选择来选择WPF路径.所以,我使用这段代码.
System.Windows.Shapes.Path path = drawCanvas.Children[i] as System.Windows.Shapes.Path;
drawCanvas.Children.RemoveAt(i);
inkCanvas.Children.Add(path);
Run Code Online (Sandbox Code Playgroud)
这是输出.我必须从0,0中选择WPF Path,因为Actualwidth它ActualHeight从0,0开始.

如何选择绝对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);
Run Code Online (Sandbox Code Playgroud)
您可以使用UIElement.UpdateLayout 方法来InkCanvas更新FrameworkElement.ActualWidth 属性和ActualHeight。请参阅ActualWidth链接以获取有关为什么需要这样做的背景信息。
编辑:
我误解了这个问题。事实并非如此ActualWidth,并且ActualHeight为零,但它们的值是相对于(0, 0)的InkCanvas。解决这个问题的一个很好的解决方案是将 包裹Path在 a 中Canvas并使用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>
Run Code Online (Sandbox Code Playgroud)
其行为如下:

这种方法的缺点是用户必须套索Canvas矩形,而不是任意形状。尽管如此,这比必须套索对象和原点要好得多。
| 归档时间: |
|
| 查看次数: |
2262 次 |
| 最近记录: |