行在 UWP 上不旋转



我目前正在将一个项目从 Windows Phone 8.1 迁移到 UWP,并且我遇到了 XAML 行的问题,该行在代码中呈现转换复合转换旋转时不会旋转,但如果在 XAML 中进行更改时会发生。在Windows Phone 8.1中,它没有任何问题。

下面是 XAML 部分:

<Maps:MapControl
    <Line x:Name="mapLineMilestoneHelper" 
        Stroke="Black" StrokeThickness="2" Opacity="1.0"  StrokeDashArray="2,2" 
        RenderTransformOrigin="0.5, 0.5"
        X1="0" Y1="-1000" X2="0" Y2="1000" Visibility="Collapsed">                       
        <Line.RenderTransform>
           <CompositeTransform x:Name="lineMilestoneHelperAzimuth" Rotation="90.0"/>
           <!--<RotateTransform x:Name="lineMilestoneHelperAzimuth" 
               CenterX="0.5" CenterY="0.5" Angle="0"/>-->
        </Line.RenderTransform>
    </Line>
</Maps:MapControl

这条线是在地图控件内绘制的。然后在代码中更改(但我将旋转值更改为 0,它不会旋转。

下面是应旋转上面的 XAML 行的 C# 代码:

lineMilestoneHelperAzimuth.Rotation = azimuth;

如您所见,我也尝试过使用RotateTransform,但它不起作用。

知道为什么会这样吗?

谢谢

根据 https://learn.microsoft.com/en-us/windows/uwp/maps-and-location/display-poi#add-a-line,您可以从代码向地图添加行。我认为这是因为这样您就可以通过元素在地图上的位置(可能在地理坐标中(指定元素的位置,以便在平移和缩放地图时它们随地图移动。

如果您正在寻找叠加类型的设置(如平视显示器(,另一种方法是:将地图嵌套在网格中,并将线作为网格中地图的同级:

我做了一个最小的工作示例。请注意更改的线坐标,并将可见性设置为可见而不是折叠,以使线进入视图并使其可见。我还使用了硬编码的画笔和线条粗细。

<Page xmlns:my="using:Windows.UI.Xaml.Controls.Maps"
    x:Class="App1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:App1"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">
    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <my:MapControl/>
        <Line x:Name="mapLineMilestoneHelper"
              Stroke="Aqua"
              StrokeThickness="5"
              Opacity="1.0"
              StrokeDashArray="2,2"
              RenderTransformOrigin="0.5, 0.5"
              X1="0"
              Y1="0"
              X2="700"
              Y2="500"
              Visibility="Visible">
            <Line.RenderTransform>
                <CompositeTransform x:Name="lineMilestoneHelperAzimuth"
                                    Rotation="90.0" />
                <!--<RotateTransform x:Name="lineMilestoneHelperAzimuth" CenterX="0.5" CenterY="0.5" Angle="0" />-->
            </Line.RenderTransform>
        </Line>
        <Button Content="Button"
                HorizontalAlignment="Left"
                Margin="64,80,0,0"
                VerticalAlignment="Top"
                Click="Button_Click" />
    </Grid>
</Page>

在代码隐藏中:

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
    }
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        lineMilestoneHelperAzimuth.Rotation = 45;
    }
}
如果要

在地图上绘制随地图移动的地理坐标中的线,建议使用 MapPolyine 而不是 XAMLhttps://learn.microsoft.com/en-us/uwp/api/Windows.UI.Xaml.Controls.Maps.MapPolyline

它将表现得更好,并坚持地图投注者(XAML 倾向于相对于地图漂移(。

相关内容

  • 没有找到相关文章

最新更新