所以我有Circle
和Slider
:
<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
Percentage
为83%
,我希望:
因此,在我的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>
结果几乎是我想要的:
唯一的问题是我的Label
不直。
有任何建议如何解决?