定位WPF路径,使其原点位于其容器的底部中心

时间:2012-03-05 20:36:49

标签: wpf xaml geometry pathgeometry

我试图将Path居中,以使其原点(0,0)位于其容器的底部中心。假设容器是Grid


示例:

Tail of arrow is at the center-bottom of the box

注意:箭头的尾部位于原点(0,0)。尾部水平居中,但整体箭头向左倾斜。无论箭头指向哪个方向,这都是我想要实现的目标。


这需要适用于x和y坐标为正,负或两者混合的路径。

如何通过标记最少的XAML完成此操作?

3 个答案:

答案 0 :(得分:0)

嗯......底部中间的位置取决于容器。尝试这样的事情:

<Grid>
  <Path Stroke="Black"
        StrokeThickness="1"
        VerticalAlignment="Bottom"
        HorizontalAlignment="Center"
        Data="M 0,0 L -50,-70 L -50,-80" />
</Grid>

答案 1 :(得分:0)

这就是我最终的目标。似乎工作,但如果有更清洁的方法,我很乐意听到它:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Path Grid.Column="1"
          HorizontalAlignment="Left"
          VerticalAlignment="Bottom"
          StrokeThickness="1"
          Data="{Binding PathGeometry}" />
</Grid>

答案 2 :(得分:0)

这是我一直在使用的。只需在任何地方绘制路径,然后将其转换为所需的起点。您可以使用Bindings将其居中在网格中。这允许将几何体放置在网格中的任何位置。

<Grid>
    <Path Stroke="Black"
          StrokeThickness="1">
        <Path.Data>
            <PathGeometry>
                <!-- Your path geomrtry -->
            </PathGeometry>
        </Path.Data>
        <Path.RenderTransform>
            <TranslateTransform Y="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Grid}, Path=ActualHeight, Converter={StaticResource widthAndHeightDivider}}"
                                X="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Grid}, Path=ActualWidth, Converter={StaticResource widthAndHeightDivider}}"/>
        </Path.RenderTransform>
    </path>
</Grid>

并使用以下转换器,将网格的ActualWidth除以to,使其居中:

public class WidthAndHeightDivider : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        double d = (double)value / 2.0;
        return d;
    }
}

我希望这有帮助!