아래 두개의 코드 전부 실행하여 설치
Install-Package LiveCharts
Install-Package LiveCharts.Wpf
Grid를 두개로 나눠 원하는 Chart를 표시 따로 표시하기
<Window x:Class="RAM_and_Disk.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
Title="System Monitor" Height="450" Width="800">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<lvc:PieChart LegendLocation="Bottom" DataClick="Chart_OnDataClick" Hoverable="False" DataTooltip="{x:Null}">
<lvc:PieChart.Series>
<lvc:PieSeries Title="RAM Used" Values="{Binding RamUsed}" DataLabels="True"
LabelPoint="{Binding PointLabel}"/>
<lvc:PieSeries Title="RAM Free" Values="{Binding RamFree}" DataLabels="True"
LabelPoint="{Binding PointLabel}"/>
</lvc:PieChart.Series>
</lvc:PieChart>
</Grid>
<Grid Grid.Column="1">
<lvc:PieChart LegendLocation="Bottom" DataClick="Chart_OnDataClick" Hoverable="False" DataTooltip="{x:Null}">
<lvc:PieChart.Series>
<lvc:PieSeries Title="Disk Used" Values="{Binding DiskUsed}" DataLabels="True"
LabelPoint="{Binding PointLabel}"/>
<lvc:PieSeries Title="Disk Free" Values="{Binding DiskFree}" DataLabels="True"
LabelPoint="{Binding PointLabel}"/>
</lvc:PieChart.Series>
</lvc:PieChart>
</Grid>
</Grid>
</Window>
아래의 코드에대한 자세한 설명은 RAM Disk 용량 가져오기에 있으니 확인해보면 좋을것.
매우심플하게 구형 형태 작성완료
using LiveCharts;
using LiveCharts.Wpf;
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Threading;
namespace RAM_and_Disk
{
public partial class MainWindow : Window
{
public ChartValues<double> RamUsed { get; set; }
public ChartValues<double> RamFree { get; set; }
public ChartValues<double> DiskUsed { get; set; }
public ChartValues<double> DiskFree { get; set; }
private PerformanceCounter ramCounter;
private PerformanceCounter diskCounter;
private DispatcherTimer timer;
public MainWindow()
{
InitializeComponent();
RamUsed = new ChartValues<double> { 0 };
RamFree = new ChartValues<double> { 100 };
DiskUsed = new ChartValues<double> { 0 };
DiskFree = new ChartValues<double> { 100 };
ramCounter = new PerformanceCounter("Memory", "% Committed Bytes In Use");
diskCounter = new PerformanceCounter("LogicalDisk", "% Free Space", "_Total");
timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(1);
timer.Tick += Timer_Tick;
timer.Start();
DataContext = this;
}
private void Timer_Tick(object sender, EventArgs e)
{
float ramUsage = ramCounter.NextValue();
float diskFree = diskCounter.NextValue();
RamUsed[0] = Math.Round(ramUsage, 2);
RamFree[0] = Math.Round(100 - ramUsage, 2);
DiskUsed[0] = Math.Round(100 - diskFree, 2);
DiskFree[0] = Math.Round(diskFree, 2);
}
public Func<ChartPoint, string> PointLabel { get; set; } = chartPoint => string.Format("{1:P}", chartPoint.Y, chartPoint.Participation);
private void Chart_OnDataClick(object sender, ChartPoint chartpoint)
{
var chart = (LiveCharts.Wpf.PieChart)chartpoint.ChartView;
foreach (PieSeries series in chart.Series)
series.PushOut = 0;
var selectedSeries = (PieSeries)chartpoint.SeriesView;
selectedSeries.PushOut = 8;
}
}
}
[참조] :https://v0.lvcharts.com/App/examples/v1/WinForms/Pie%20or%20Doughnut