WPF用LiveChart來畫餅圖

WPF用LiveChart來畫餅圖

效果如下:
在這裏插入圖片描述
xmal界面代碼:

<Window x:Class="餅圖.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
        xmlns:local="clr-namespace:餅圖"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Border BorderThickness="2" BorderBrush="Blue" Margin="10">
            <lvc:PieChart Name="pipChart" LegendLocation="Bottom" DataClick="pipChart_DataClick" Hoverable="False"
                          DataTooltip="{x:Null}">
                <lvc:PieChart.Series>
                    <lvc:PieSeries Title="Maria" DataLabels="True" LabelPoint="{Binding PointLabel}" Values="3"/>
                    <lvc:PieSeries Title="Charles" DataLabels="True" LabelPoint="{Binding PointLabel}" Values="4"/>
                    <lvc:PieSeries Title="Frida" DataLabels="True" LabelPoint="{Binding PointLabel}" Values="6"/>
                    <lvc:PieSeries Title="Frederic" DataLabels="True" LabelPoint="{Binding PointLabel}" Values="2"/>
                </lvc:PieChart.Series>
            </lvc:PieChart>
        </Border>
    </Grid>
</Window>

cs後臺代碼:

using LiveCharts;
using LiveCharts.Wpf;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace 餅圖
{
    /// <summary>
    /// MainWindow.xaml 的交互邏輯
    /// </summary>
    public partial class MainWindow : Window
    {
        public Func<ChartPoint, string> PointLabel { get; set; }
        public MainWindow()
        {
            InitializeComponent();
            PointLabel = chartPoint => string.Format("{0}({1:p})", chartPoint.Y, chartPoint.Participation);
            DataContext = this;


        }

        private void pipChart_DataClick(object sender, LiveCharts.ChartPoint chartPoint)
        {
            var chart = (LiveCharts.Wpf.PieChart)chartPoint.ChartView;


            //clear selected slice
            foreach(PieSeries series in chart.Series)
            {
                series.PushOut = 0;

                var selectedSeries = (PieSeries)chartPoint.SeriesView;
                selectedSeries.PushOut = 8;
            }

        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章