0

我正在为 wp8 创建一个增强现实应用程序。它看起来像下面显示的图像。在此处输入图像描述

黑屏将被来自 cam 的视频源填充。对于左上角的小圆圈,我使用两个网格一个接一个。第一个网格包含石灰绿段,该网格将是固定的。第二个网格包含较大的圆圈,顶部有字母 N。这必须通过从设备罗盘获取数据来旋转以显示北方向。

我按照下面给出的文章来模仿指南针的制作。 http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202974(v=vs.105).aspx

但是在 timer_Tick 事件中,我必须用字母 N 更新褐色网格的旋转。我完全不知道如何从指南针数据中获取网格的实时旋转。如何使用故事板来提供角度?或者有没有更简单的方法而不需要开始和停止故事板和所有的大惊小怪?

下面给出了网格 xaml 代码。

<Grid Name="StationaryLittleMap" Width="150" Height="150" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="20,20,0,0">
            <Path Stroke="White" Fill="LimeGreen" StrokeThickness="1">
                <Path.Data>
                    <PathGeometry>
                        <PathGeometry.Figures>
                            <PathFigureCollection>
                                <PathFigure StartPoint="38,10">
                                    <PathFigure.Segments>
                                        <PathSegmentCollection>
                                            <ArcSegment Size="75,75" RotationAngle="36" IsLargeArc="False" SweepDirection="Clockwise" Point="112,10" />
                                            <LineSegment Point="75,75" />
                                            <LineSegment Point="38,10" />
                                        </PathSegmentCollection>
                                    </PathFigure.Segments>
                                </PathFigure>
                            </PathFigureCollection>
                        </PathGeometry.Figures>
                    </PathGeometry>
                </Path.Data>
            </Path>
        </Grid>

        <Grid Name="MoveLittleMap" Width="150" Height="150" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="20,20,0,0" >
            <Grid.RenderTransform>
                <CompositeTransform />
            </Grid.RenderTransform>
            <Ellipse Fill="Orange"  Height="150" Width="150"  RenderTransformOrigin="0.5,0.5" Opacity="0.4" />
            <TextBlock Text="N" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,0,0,0" />
        </Grid>
4

1 回答 1

1

如果对动画不感兴趣,可以直接更新 CompositeTransform。

首先,在 XAML 中为其命名:

<CompositeTransform x:Name="CompassTransform" />

然后,直接从代码中改变角度:

this.CompassTransform.Rotation = 45;

但是,如果您希望指南针平稳旋转,那么您别无选择,只能使用情节提要。

于 2013-09-06T13:24:18.043 回答