2

Path原点(0、0)がコンテナの中央の下部に配置されるように、aを中央に配置しようとしています。コンテナが。であると仮定しGridます。


例:

矢印の尻尾はボックスの中央下部にあります

注:矢印の尾は原点(0、0)にあります。尾は水平方向の中央に配置されていますが、矢印全体が左に傾いています。これは、矢印がどちらの方向を指しているかに関係なく、私が達成したいことです。


これは、x座標とy座標が正、負、または両方の混合であるパスに対して機能する必要があります。

最小のマークアップでXAMLを介してこれをどのように行うことができますか?

4

3 に答える 3

3

これが私が使っているものです。好きな場所にパスを描き、後でそれを目的の開始点に変換します。バインディングを使用して、グリッド内で中央に配置できます。これにより、グリッド内の任意の場所にジオメトリを配置できます。

<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をで除算して中央に配置する次のコンバーターがあります。

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

これがお役に立てば幸いです。

于 2018-05-15T08:35:11.593 に答える
2

これが私がやったことです。うまくいくようですが、これを行うためのよりクリーンな方法があれば、私はそれを聞きたいです:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Path Grid.Column="1"
          HorizontalAlignment="Left"
          VerticalAlignment="Bottom"
          StrokeThickness="1"
          Data="{Binding PathGeometry}" />
</Grid>
于 2012-03-05T22:57:21.910 に答える
0

ええと...下中央の位置enはコンテナによって異なります。次のようなものを試してください。

<Grid>
  <Path Stroke="Black"
        StrokeThickness="1"
        VerticalAlignment="Bottom"
        HorizontalAlignment="Center"
        Data="M 0,0 L -50,-70 L -50,-80" />
</Grid>
于 2012-03-05T21:13:49.587 に答える