WPF:将Circle放在Circle周围的特定Circle Value点

时间:2017-07-16 11:53:23

标签: wpf geometry

所以我有CircleSlider

<DesignInControl:CircularProgressBar
    x:Name="circle"
    HorizontalAlignment="Center"
    VerticalAlignment="Center"
    Percentage="{Binding Value, ElementName=slider}"
    SegmentColor="Red"
    StrokeThickness="25"
    Radius="100"/>

当此Slider值更改时,我的Circle Percentage属性已更新,但我想在Label Circle附近添加Value

例如,如果Circle Percentage83%,我希望:

enter image description here

因此,在我的Slider ValueChanged Event内,我计算了这个:

    public void slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
    {
        var radius = circle.Radius;
        var sangle = (slider.Value * 360) / 100;
        double angleRad = (Math.PI / 180.0) * (sangle - 90);

        double x = radius * Math.Cos(angleRad);
        double y = radius * Math.Sin(angleRad);

        vlb.Content = string.Format("{0:N2}", slider.Value);
        vlb.RenderTransform = new RotateTransform { Angle = sangle, CenterX = 0, CenterY = 0 };
    }

所以我创建了简单的Label

    <Label x:Name="vlb"
           Content="123"
       Margin="-50,-50,-50,-50"
           HorizontalAlignment="Center"
       RenderTransformOrigin="0.5,0.5"
       Grid.RowSpan="2"
       xml:space="preserve">
        <Label.RenderTransform>
    <TransformGroup>
        <ScaleTransform/>
        <SkewTransform/>
        <RotateTransform Angle="3600.12"/>
        <TranslateTransform/>
    </TransformGroup>
</Label.RenderTransform>  
    </Label>

结果几乎是我想要的:

enter image description here

唯一的问题是我的Label不直。

有任何建议如何解决?

0 个答案:

没有答案