导出图表是指将其保存为其他文件格式,以使最终用户能够存储它以备后用。例如,另存为图像的图表可以在演示文稿或任何其他应用程序中使用。
另存为图片
FlexChart的FlexChart类提供 SaveImage方法 ,使您可以将图表作为图像保存到指定格式的图片。此方法采用四个参数,即流,图像格式,图像的宽度和高度。FlexChart控件当前支持的格式是.png,.jpeg和.svg。
private void btnImport_Click(object sender, EventArgs e) { var filter = "XML File (*.xml)|*.xml"; var format = "xml"; OpenFileDialog ofd = new OpenFileDialog() { Filter = filter }; if (ofd.ShowDialog() == DialogResult.OK) { var fmt = Path.GetExtension(ofd.FileName); Serializer.DeserializeChartFromFile(ofd.FileName, flexChart1, format); } }
序列化
序列化是指将图表对象转换为可以存储和传输的字节序列或文件序列。当与图表对象相关的数据必须从一个应用程序传输到另一个应用程序以在另一个应用程序中复制相同对象供进一步使用时,通常使用此概念。
在FlexChart中,您可以使用C1.Win.Chart.Serialization程序集将图表序列化为各种文件格式。您可以通过名称为C1.Win.Chart.Serialization的示例项目,访问项目内部的obj\Debug文件夹来获取此程序集 。该程序集提供Serializer类,该类提供了将图表序列化为xml,json,binary和base64格式的方法。在此示例中,我们使用SerializeChartToFile方法,使您可以将图表序列化为任何这些格式。此方法接受三个参数,即将FlexChart对象属性存储到的文件名,要序列化的FlexChart实例和要保存FlexChart实例的文件格式。同样,在这种情况下,您可以使用其他方法(例如SerializeChartToXml)将图表序列化为特定格式(例如XML)。
注意: 如果在安装WinForms Edition时安装了示例项目,则C1.Win.Chart.Serialization示例位于 \文档\ComponentOne Samples\WinForms\v4.5.2\C1FlexChart\CS\FlexChartSerializer。
private void btnExport_Click(object sender, EventArgs e) { var filter = "XML File (*.xml)|*.xml"; var format = "xml"; SaveFileDialog sfd = new SaveFileDialog() { OverwritePrompt = true, Filter = filter }; if (sfd.ShowDialog() == DialogResult.OK) { var fmt = Path.GetExtension(sfd.FileName); Serializer.SerializeChartToFile(sfd.FileName, flexChart1, format); } }
反序列化
反序列化是指读取存储在字节流中的对象状态以导入原始对象的过程。在FlexChart中,就像序列化一样,您可以使用C1.Win.Chart.Serialization 程序集的Serializer类 中的各种反序列化方法,对以特定文件格式保存的这些数据进行反序列化,以重新构建图表。在此示例中,我们使用DeserializeChartFromFile方法,该方法接受三个参数,并可以从任何文件格式重新创建图表。这三个参数是包含FlexChart对象属性的文件的名称,要恢复成的FlexChart实例以及恢复FlexChart实例的文件格式。
private void btnImport_Click(object sender, EventArgs e) { var filter = "XML File (*.xml)|*.xml"; var format = "xml"; OpenFileDialog ofd = new OpenFileDialog() { Filter = filter }; if (ofd.ShowDialog() == DialogResult.OK) { var fmt = Path.GetExtension(ofd.FileName); Serializer.DeserializeChartFromFile(ofd.FileName, flexChart1, format); } }