我使用(visual studio,windows form,c#)来创建一些绘图。
我的目标是添加保存按钮以保存绘图,当我打开保存的文件以后,我可以继续我以前的工作......
现在发生的事情是,每次打开视觉工作室时,我都需要重新绘制所有内容。
答案 0 :(得分:1)
第一项任务是收集您在List<T>
中绘制的数据。
有关如何收集它们的代码,请参阅(全部)my comments here或Reza的回答here.
这是一个保存&amp;加载可用于绘制曲线的简单PointF
列表:
using System.IO;
using System.Xml.Serialization;
// all drawn curve points are collected here:
List<List<PointF>> curves = new List<List<PointF>>();
private void SaveButton_Click(object sender, EventArgs e)
{
XmlSerializer xmls = new XmlSerializer(typeof(List<List<PointF>>));
using (Stream writer = new FileStream(yourDrawingFileName, FileMode.Create))
{
xmls.Serialize(writer, curves);
writer.Close();
}
}
private void LoadButton_Click(object sender, EventArgs e)
{
if (File.Exists(yourDrawingFileName))
{
XmlSerializer xmls = new XmlSerializer(typeof(List<List<PointF>>));
using (Stream reader = new FileStream(yourDrawingFileName, FileMode.Open))
{
var curves_ = xmls.Deserialize(reader);
reader.Close();
curves = (List<List<PointF>>) curves_;
Console.Write(curves.Count + " curves loaded.");
}
}
yourPanelOrPictureBoxOrForm.Invalidate;
}
如果要保存更复杂的绘图操作类,请将PointF
替换为yourClass
。确保该类是可序列化的! (Points
很好,ints
和strings
当然也是如此; Colors
需要一点帮助..)
有关如何设计更复杂的绘制动作类的提示,请参阅here