如何在Canvas中移动Path对象?

时间:2015-07-09 13:08:47

标签: c# wpf

如何更改画布上的路径位置。它不会通过Canvas.Left / Top / Right / Bottom属性移动而且它没有X,而不是Y. 如果有人知道它是怎么做的,请帮帮我。 例如:我有一些路径,我需要以编程方式为他改变位置。

<Canvas>
    <Path Stroke="Black" StrokeThickness="10">
        <Path.Data>
            <PathGeometry>
                <PathGeometry.Figures>
                    <PathFigureCollection>    
                        <PathFigure StartPoint="100,80">
                            <PathFigure.Segments>
                                <PathSegmentCollection>
                                    <PolyBezierSegment Points="90,200 140,200 160,200 180,200 430,190 430,280" />
                                </PathSegmentCollection>
                            </PathFigure.Segments>
                        </PathFigure>
                    </PathFigureCollection>
                </PathGeometry.Figures>
            </PathGeometry>
        </Path.Data>
    </Path>
</Canvas>

1 个答案:

答案 0 :(得分:1)

它没有XY属性,因为Path对象并不关心它所在的

您可以在“画布”内部或“网格”内部或“StackPanel”内部放置路径。为什么路径在放入包含列和行的项目的网格中时需要X / Y? Grid及其Columns和Rows也有相同的推理。路径也没有与网格相关的ColumnRow属性,对吧?

这些设置由所谓的附加属性设置。 Canvas定义了Canvas.LeftCanvas.Top等属性,您可以使用这些属性在Canvas中定位Path。它的工作方式与Grid和Grid.Column / Grid.Row属性的工作方式相同。

实际上,值得注意的是,Canvas不提供X / Y附加属性,而是左/右上/下,允许您可以选择与头寸对齐的位置。

XAML:

<Canvas>
    <Path x:Name="mypath" Canvas.Left="50" Canvas.Top="25" .... />
</Canvas>

C#:

Canvas.SetLeft(mypath, 50.0);
Canvas.SetTop(mypath, 25.0);