我想制作一些指南针应用程序,并要根据用户的身高显示针头偏转。但是我不明白我该如何赋予指南针适当的形状。目前,我正在使用此代码显示Compass。

 <Ellipse StrokeThickness="2" x:Name="circle" Width="400" Height="400"
                  Margin="0,90,0,0" Fill="Black">
                <Ellipse.Stroke>
                    <SolidColorBrush Color="{StaticResource PhoneAccentColor}" />
                </Ellipse.Stroke>
            </Ellipse>

 <Line  x:Name="line" X1="240" Y1="350" X2="240" Y2="270"  Stroke="{StaticResource  PhoneForegroundBrush}" StrokeThickness="4"></Line>


您可以通过此代码看到我的UI较差。



我想要这样的UI更好,并带有至少这样的东西。



我希望有人可以帮助我解决这个UI形状

最佳答案

下面将为您提供特定电话页面所需的示例箭头,其中心在底部,因此您可以将其放在指南针上。

它还有一个名为MyTransform的命名成员,您可以简单地设置Rotation属性的角度(0 =北,180 =南等)。

        <Path Data="M87.026947,24.16836 L102.66625,48.669857 L94.666451,48.669857 L94.666451,84.674995 L78.666855,84.674995 L78.666855,48.669857 L70.667053,48.669857 z" HorizontalAlignment="Right" Height="60.498" Stretch="Fill" UseLayoutRounding="False" VerticalAlignment="Bottom" Width="32" RenderTransformOrigin="0.5,1" Margin="0,0,208,191.502">
            <Path.RenderTransform>
                <CompositeTransform x:Name="MyTransform" Rotation="0" ScaleX="2.91" TranslateX="-16" TranslateY="-61" ScaleY="3.4"/>
            </Path.RenderTransform>
            <Path.Fill>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="White" Offset="0"/>
                    <GradientStop Color="White" Offset="1"/>
                    <GradientStop Color="#FEFEFEFE" Offset="0.58"/>
                    <GradientStop Color="#FEE22828" Offset="0.604"/>
                    <GradientStop Color="#FEE64C4C" Offset="0.795"/>
                    <GradientStop Color="#FEFFFFFF" Offset="0.826"/>
                </LinearGradientBrush>
            </Path.Fill>
        </Path>


示例图片:



它是通过导入示例图像并在顶部绘制来在Expression blend中创作的。然后缩放比例更改为与您的实际页面大小相匹配(因为显示的位图不是1:1比例)。

要使用从代码到所需角度的简单设置旋转

例如根据您的代码段:

    void DrawCompass()
    {
       MyTransform.Rotation = 0.0;   // North
       MyTransform.Rotation = 180.0; // South
       MyTransform.Rotation = 90.0;  // East
       MyTransform.Rotation = 270.0; // West
       // Or any other angle in between
       // or simply bind the Rotation property to an angle property on your viewmodel
    }

关于c# - 指南针用户界面和针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11341843/

10-10 22:38