WPF实现统计图(饼图仿LiveCharts)
?WPF開發(fā)者QQ群:?340500857? | 微信群 -> 進(jìn)入公眾號(hào)主頁(yè)?加入組織
歡迎轉(zhuǎn)發(fā)、分享、點(diǎn)贊、在看,謝謝~。??
01
—
效果預(yù)覽
效果預(yù)覽(更多效果請(qǐng)下載源碼體驗(yàn)):
一、PieControl.cs 代碼如下?
二、App.xaml?代碼如下
<Style TargetType="{x:Type local:PieControl}"><Setter Property="UseLayoutRounding" Value="True" /><!--<Setter Property="Background" Value="#252525"/>--><Setter Property="Foreground" Value="White"/><Setter Property="Width" Value="250"/><Setter Property="Height" Value="250"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type local:PieControl}"><ItemsControl Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" ItemsSource="{TemplateBinding PieSegmentModels}"Background="{TemplateBinding Background}"><ItemsControl.ItemsPanel><ItemsPanelTemplate><Grid IsItemsHost="True"/></ItemsPanelTemplate></ItemsControl.ItemsPanel><ItemsControl.ItemTemplate><DataTemplate><ed:Arc Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"ArcThickness="{Binding ArcThickness,RelativeSource={RelativeSource FindAncestor,AncestorType=local:PieControl}}" ArcThicknessUnit="Percent"EndAngle="{Binding EndAngle}"StartAngle="{Binding StartAngle}"Stretch="None"ToolTip="{Binding Name}"Stroke="{Binding ColorStroke}"StrokeThickness="2"Fill="{Binding Color}"></ed:Arc></DataTemplate></ItemsControl.ItemTemplate></ItemsControl></ControlTemplate></Setter.Value></Setter> </Style>三、MainWindow.xaml 代碼如下
<Window x:Class="WpfPieControl.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:local="clr-namespace:WpfPieControl"mc:Ignorable="d"Title="微信公眾號(hào):WPF開發(fā)者" Height="450" Width="800"><StackPanel><WrapPanel Margin="10"><local:PieControl PieSegmentModels="{Binding PieSegmentModels,RelativeSource={RelativeSource AncestorType=local:MainWindow}}" ArcThickness="1"/><local:PieControl PieSegmentModels="{Binding PieSegmentModels,RelativeSource={RelativeSource AncestorType=local:MainWindow}}" Margin="4,0"ArcThickness="{Binding ElementName=PRAT_Slider,Path=Value}"/><local:PieControl PieSegmentModels="{Binding PieSegmentModels,RelativeSource={RelativeSource AncestorType=local:MainWindow}}" ArcThickness="0.65"/></WrapPanel><Slider Maximum="0.9" Minimum="0.1" x:Name="PRAT_Slider" Margin="10" Width="200"/><Button Content="更新" Click="Button_Click" VerticalAlignment="Bottom" Width="200"/></StackPanel> </Window>四、MainWindow.xaml.cs 代碼如下
using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; 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; using WpfPieControl.Models;namespace WpfPieControl {/// <summary>/// MainWindow.xaml 的交互邏輯/// </summary>public partial class MainWindow : Window{public ObservableCollection<PieSegmentModel> PieSegmentModels{get { return (ObservableCollection<PieSegmentModel>)GetValue(PieSegmentModelsProperty); }set { SetValue(PieSegmentModelsProperty, value); }}public static readonly DependencyProperty PieSegmentModelsProperty =DependencyProperty.Register("PieSegmentModels", typeof(ObservableCollection<PieSegmentModel>), typeof(MainWindow), new PropertyMetadata(null));List<ObservableCollection<PieSegmentModel>> collectionList = new List<ObservableCollection<PieSegmentModel>>();public MainWindow(){InitializeComponent();PieSegmentModels = new ObservableCollection<PieSegmentModel>();var collection1 = new ObservableCollection<PieSegmentModel>();collection1.Add(new PieSegmentModel { Name = "一", Value = 10 });collection1.Add(new PieSegmentModel { Name = "二", Value = 20 });collection1.Add(new PieSegmentModel { Name = "三", Value = 25 });collection1.Add(new PieSegmentModel { Name = "四", Value = 45 });var collection2 = new ObservableCollection<PieSegmentModel>();collection2.Add(new PieSegmentModel { Name = "一", Value = 30 });collection2.Add(new PieSegmentModel { Name = "二", Value = 15 });collection2.Add(new PieSegmentModel { Name = "三", Value = 10 });collection2.Add(new PieSegmentModel { Name = "四", Value = 55 });collectionList.AddRange(new[] { collection1, collection2 });PieSegmentModels = collectionList[0];}bool isRefresh = false;private void Button_Click(object sender, RoutedEventArgs e){if (!isRefresh)PieSegmentModels = collectionList[1];elsePieSegmentModels = collectionList[0];isRefresh = !isRefresh;}} }源碼地址
github:https://github.com/yanjinhuagood/WPFDevelopers.git
gitee:https://gitee.com/yanjinhua/WPFDevelopers.git
WPF開發(fā)者QQ群:?340500857?
blogs:?https://www.cnblogs.com/yanjinhua
Github:https://github.com/yanjinhuagood
出處:https://www.cnblogs.com/yanjinhua
版權(quán):本作品采用「署名-非商業(yè)性使用-相同方式共享 4.0 國(guó)際」許可協(xié)議進(jìn)行許可。
轉(zhuǎn)載請(qǐng)著名作者 出處 https://github.com/yanjinhuagood
總結(jié)
以上是生活随笔為你收集整理的WPF实现统计图(饼图仿LiveCharts)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hello Blazor:(2)集成Ta
- 下一篇: .net core 下使用StackEx