GDI+绘图保存问题 c#

来源:百度知道 编辑:UC知道 时间:2024/06/21 13:03:19
在一个form里面画出N个图形(圆,正方形等),点击保存按纽(到一个文件或其它方式),当下次运行这个form时,点击一个读取按纽(从一个文件或其它方式),就可以把保存的图形读取出来。
这个想法,怎么实现?

这个很容易的。可以采用“文档-视图”的观念设计。
你把form里的图形用一个个的对象表示,在绘制时,根据UI的操作,生成这些对象,保存一个集合里就好了。
这些对象和对象池要声明为可序列化的,这样就不必自己去写序列代码了。
在保存时,调用集合对象的序列化函数,即可以保存。在打开时,调用集合类的反序列化函数,从文件创建那些对象。

最后,为form的paint事件实现订阅,固定循环你的对象池的对象,根据对象的属性来画图就好了。

我大概写个示意的代码和类设计,有打字错误请包涵:

// 图形对象基类
[serialize]
public abstract class sharp
{
public Point StartPoint{set;get;}
public abstract void Draw(Graphics g);
}

public class circle : sharp
{
public double R;
public override void Draw(Graphics g )
{
// 这里写绘制自己的代码
}
}

//对象集合管理类
[serialize]
public class shapcollection
{
public List<sharp> sharps = new List<Sharp>();
}

// form 类
public class My_Form:Form
{
....
private ShapCollection MySharps = new ShapCollection();

// 比如这里你的保存菜单被点了。
mnSaveSharpToFile_Clicked()
{