C# WPF LiveCharts LineSeries: 获取图表对象并保存图片
要在 C# WPF 中使用 LiveCharts 库的 LineSeries,获取图表对象并保存为图片,可以按照以下步骤进行操作:
-
首先,确保已经安装并引用了 LiveCharts 库。可以通过 NuGet 包管理器来安装。
-
在 XAML 文件中添加一个 Chart 控件,并设置其 Name 属性为 'chart',如下所示:
<Window x:Class="YourNamespace.YourWindow"
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="Your Window" Height="450" Width="800">
<Grid>
<lvc:CartesianChart Name="chart" />
</Grid>
</Window>
- 在代码中,使用 LineSeries 类创建一个 LineSeries 对象,并将其添加到 Chart 的 Series 集合中,如下所示:
using LiveCharts;
using LiveCharts.Wpf;
public partial class YourWindow : Window
{
public YourWindow()
{
InitializeComponent();
// 创建 LineSeries 对象
var series = new LineSeries
{
Title = "Series 1",
Values = new ChartValues<double> { 1, 3, 2, 8, 5 }
};
// 将 LineSeries 对象添加到 Chart 的 Series 集合中
chart.Series.Add(series);
}
}
- 现在你可以在需要的时候获取 Chart 对象,并将其保存为图片。可以通过以下代码实现:
using System.IO;
public partial class YourWindow : Window
{
public YourWindow()
{
InitializeComponent();
// 创建 LineSeries 对象...
}
private void SaveChartAsImage()
{
// 获取 Chart 对象
var chart = this.chart;
// 创建 RenderTargetBitmap 对象,用于保存 Chart 的图像
var renderTargetBitmap = new RenderTargetBitmap((int)chart.ActualWidth, (int)chart.ActualHeight, 96, 96, PixelFormats.Pbgra32);
// 渲染 Chart 并保存为图像
renderTargetBitmap.Render(chart);
// 创建 PngBitmapEncoder 对象,用于保存图像为 PNG 格式
var pngEncoder = new PngBitmapEncoder();
pngEncoder.Frames.Add(BitmapFrame.Create(renderTargetBitmap));
// 保存图像到文件
var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Img", "chart.png");
using (var fileStream = File.Create(filePath))
{
pngEncoder.Save(fileStream);
}
}
}
- 在需要保存图像的地方调用
SaveChartAsImage()方法,该方法将 Chart 对象渲染为图像,并保存为 PNG 格式的文件。保存路径为 AppDomain.CurrentDomain.BaseDirectory 文件夹下的 Img 文件夹中的 chart.png 文件。
确保文件夹 Img 已经存在,并具有适当的写入权限。可以根据需要修改保存路径和文件名。
原文地址: https://www.cveoy.top/t/topic/o5eP 著作权归作者所有。请勿转载和采集!