在wp7的饼图

时间:2012-09-20 10:27:12

标签: c#

有没有办法在WP7中绘制饼图?

如果没有,有没有办法绘制一个椭圆,其中有一个基于用户值的扇区?

我已经看过一些第三方工具来绘制饼图,但我不满意......

请提供任何代码或任何其他方式来获取饼图

我尝试了以下操作,但它不起作用:

        EllipseGeometry OuterEllipse = new EllipseGeometry();
        EllipseGeometry InnerEllipse = new EllipseGeometry();
        OuterEllipse.Center = new Point(100, 100);
        OuterEllipse.RadiusX = 100;
        OuterEllipse.RadiusY = 100;

        InnerEllipse.Center = new Point(100, 100);
        InnerEllipse.RadiusX = 90;
        InnerEllipse.RadiusY = 90;

        System.Windows.Shapes.Path path = new System.Windows.Shapes.Path();
        System.Windows.Shapes.Path path1 = new System.Windows.Shapes.Path();

        SolidColorBrush solidbrush = new SolidColorBrush(Colors.Blue);
        path.Fill = solidbrush;
        path.Data = OuterEllipse;

        SolidColorBrush solidbrush1 = new SolidColorBrush(Colors.Yellow);
        path1.Fill = solidbrush1;
        path1.Data = InnerEllipse;

        Chart_stackPanel.Children.Add(path);
        Chart_stackPanel.Children.Add(path1);`

任何帮助!

1 个答案:

答案 0 :(得分:0)

这是一个示例,您可以使用它来绘制带有两个分区的饼图.....在Windows Phone 7中使用xaml代码........

        <TextBlock Height="31" HorizontalAlignment="Left" Margin="165,9,0,0" Name="Dashboard_Head_Block" Text="dashboard" Foreground="GreenYellow" FontFamily="Times New Roman" FontSize="26" VerticalAlignment="Top" Width="124" />
        <TextBlock Height="30" FontWeight="Bold" HorizontalAlignment="Left" Margin="12,48,0,0" Name="storageDetails_textBlock" Text="mystorage details" VerticalAlignment="Top" Width="175" />
        <Border Name="ChartBorder" BorderBrush="GreenYellow" CornerRadius="20" BorderThickness="1" Margin="6,82,8,363">
             <StackPanel Background="Black" x:Name="DashBoardOuter_Panel" Loaded="DashBoardOuter_Panel_Loaded" Margin="3,6,7,6">
                <Border Name="PieBorder" BorderBrush="BlueViolet" BorderThickness="5" HorizontalAlignment="Right" Height="214" Margin="0,50,8,0" Width="150">
                    <StackPanel Margin="3,2,3,3">
                        <Rectangle Name="UsedRect"  Height="36" Margin="0,30,81,0" StrokeStartLineCap="Round" Stroke="Green" StrokeThickness="5" StrokeMiterLimit="50" StrokeLineJoin="Round" Width="37" >
                            <Rectangle.Fill>
                                <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0">
                                    <GradientStop Color="Black" Offset="0"/>
                                    <GradientStop Color="#FF092F7A" Offset="0.613"/>
                                    <GradientStop Color="#FF444AA3" Offset="0.335"/>
                                    <GradientStop Color="#FF4F55C0"/>
                                </LinearGradientBrush>
                            </Rectangle.Fill>
                        </Rectangle>
                        <TextBlock Name="Used_TextBlock"  Margin="45,-35,0,0" Height="34" TextWrapping="Wrap" Text="Used" Width="69" />
                        <Rectangle Name="UnusedRect" Height="34" Margin="-80,60,0,0" StrokeStartLineCap="Round" Stroke="Green" StrokeThickness="5" StrokeMiterLimit="50" StrokeLineJoin="Round" Width="40">
                            <Rectangle.Fill>
                                <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0">
                                    <GradientStop Color="Black" Offset="0"/>
                                    <GradientStop Color="#FF84DE2F" Offset="1"/>
                                    <GradientStop Color="#FF345812" Offset="0.017"/>
                                    <GradientStop Color="#FF2B4E09" Offset="0.487"/>
                                </LinearGradientBrush>
                            </Rectangle.Fill>
                        </Rectangle>
                        <TextBlock Name="Unused_TextBlock" Height="31" Margin="51,-35,8,0" TextWrapping="Wrap" Text="Unused" Width="71" />
                    </StackPanel>
                </Border>
             </StackPanel>
          </Border>
            <StackPanel Background="Black" Height="291" HorizontalAlignment="Left" x:Name="Dashboard_Panel" VerticalAlignment="Top" Width="279" Margin="12,93,0,0" RenderTransformOrigin="0.57,0.581">
                <StackPanel.Projection>
                    <PlaneProjection x:Name="DStack_Plane"></PlaneProjection>
                </StackPanel.Projection>
                <StackPanel.Resources>
                    <Storyboard x:Name="DOuter_Panel">
                        <DoubleAnimation Storyboard.TargetName="DStack_Plane"
                         Storyboard.TargetProperty="RotationX"
                         From="0" To="360" Duration="0:0:1" />
                    </Storyboard>
                </StackPanel.Resources>
                <Ellipse Height="291" Margin="8,0" StrokeStartLineCap="Round" Stroke="Green" StrokeThickness="5" StrokeMiterLimit="50" StrokeLineJoin="Round">
                    <Ellipse.Fill>
                        <RadialGradientBrush>
                            <GradientStop Color="Black" Offset="0"/>
                            <GradientStop Color="#FF113987" Offset="1"/>
                            <GradientStop Color="#FF444AA3" Offset="0.683"/>
                            <GradientStop Color="#FF252B99"/>
                        </RadialGradientBrush>
                    </Ellipse.Fill>
                </Ellipse>
                <es:Arc ArcThickness="1" ArcThicknessUnit="Percent" EndAngle="360" Height="288" Margin="10,-290,8,0" StrokeStartLineCap="Round" Stretch="None" Stroke="Green" StrokeThickness="5" StrokeMiterLimit="50" StrokeLineJoin="Round" StartAngle="95" UseLayoutRounding="False">
                    <es:Arc.Fill>
                        <RadialGradientBrush>
                            <GradientStop Color="#FF3AAF22" Offset="0.652"/>
                            <GradientStop Color="#FF1B700C" Offset="0.996"/>
                            <GradientStop Color="#FF258914"/>
                        </RadialGradientBrush>
                    </es:Arc.Fill>
                </es:Arc>
            </StackPanel>
            <Ellipse HorizontalAlignment="Left" Height="36" Margin="145,215,0,0" StrokeStartLineCap="Round" Stroke="#FF252B99" StrokeThickness="5" StrokeMiterLimit="50" StrokeLineJoin="Round" VerticalAlignment="Top" Width="35" RenderTransformOrigin="0.871,1.653">
                <Ellipse.Fill>
                    <RadialGradientBrush>
                        <GradientStop Color="#FF6162B4" Offset="0.165"/>
                        <GradientStop Color="#FF161760" Offset="0.457"/>
                        <GradientStop Color="#FF5455AD" Offset="0.761"/>
                    </RadialGradientBrush>
                </Ellipse.Fill>
            </Ellipse>