Chart for .NET / User's Guide / Serialization / Serializing Objects

Serializing Objects

The Serializer has several methods allowing you to serialize object from the chart to a file or stream. The following sections describe this feature. Note that the code is valid for any chart object (label, watermark, legend etc.).

 Serialization to Stream

You can use the serializer to clone objects or copy state from one chart object to another. The following code creates a chart that is identical to the first chart in the Charts collection:

C#
Copy Code
NControlSerializer serializer = chartControl.Serializer;
NChart chart = chartControl.Charts[0];

// save the chart to memory stream
MemoryStream memoryStream = new MemoryStream();
serializer.SaveToStream(chart, memoryStream, PersistencyFormat.Binary, null);

// go back to the beginning of the stream
memoryStream.Position = 0;

NChart chart2 = (NChart)serializer.LoadFromStream(typeof(NChart), memoryStream, PersistencyFormat.Binary, null);
Visual Basic
Copy Code
Dim serializer As NControlSerializer = chartControl.Serializer
Dim chart As NChart = chartControl.Charts(0)

' save the chart to memory stream
Dim memoryStream As New MemoryStream
serializer.SaveToStream(chart, memoryStream, PersistencyFormat.Binary, Nothing)

' go back to the beginning of the stream
memoryStream.Position = 0

Dim chart2 As NChart = CType(serializer.LoadFromStream(GetType(NChart), memoryStream, PersistencyFormat.Binary, Nothing), NChart)

Notice that you have to reset the stream position after you serialize the object:

C#
Copy Code
// go back to the beginning of the stream
memoryStream.Position = 0;
Visual Basic
Copy Code
' go back to the beginning of the stream
memoryStream.Position = 0
 Serialization to File

Alternatively you can serialize the chart to a file:

C#
Copy Code
NControlSerializer serializer = chartControl.Serializer;
NChart chart = chartControl.Charts[0];

// save the chart to file
MemoryStream memoryStream = new MemoryStream();
serializer.SaveToFile(chart, "c:\\temp\\chart.bin", PersistencyFormat.Binary, null);

// load the chart from file
NChart chart2 = (NChart)serializer.LoadFromFile(typeof(NChart), "c:\\temp\\chart.bin", PersistencyFormat.Binary, null);
Visual Basic
Copy Code
Dim serializer As NControlSerializer = chartControl.Serializer
Dim chart As NChart = chartControl.Charts(0)

' save the chart to file
serializer.SaveToFile(chart, "c:\\temp\\chart.bin", PersistencyFormat.Binary, Nothing)

' load the chart from file
Dim chart2 As NChart = CType(serializer.LoadFromFile(GetType(NChart), "c:\\temp\\chart.bin", PersistencyFormat.Binary, Nothing), NChart)
 Related Examples
Windows Forms: Serialization\Chart Objects
See Also