日期:2014-05-17  浏览次数:20964 次

菜鸟提问,关于GDI+中存储的思路(类设计)
我想设计一个可以画图并可以保存的软件。



选A时,画圆,选B时,画方。可以画完一个再画一个,可以删(目前先做这些)。

1、存储、序列化怎么设计?可以告诉我最基本的模型吗?设计一个怎么样的类,然后可以存每个图的信息。
2、最后可以保存为bmp格式。
3、我想设置个按钮,如下:



可以对我的每个图的颜色进行变换,要是有调色板就更好了。如何进行get set呢?

请大家提供思路!谢谢!


------解决方案--------------------
1、椭圆:长轴a,短轴b,圆心o,焦距c。如果是圆,记个半径就ok了。
2、矩形:长a,宽b。
属性就上面这些,最终以bmp格式保存为图片即可。
------解决方案--------------------
http://www.codeproject.com/Articles/8494/DrawTools

您可以参考这个软件,非常好的。
智商余额不足推荐我的。

------解决方案--------------------
就是一个类的对象,你可以序列化为xml保存,然后再反序列化为对象,根据对象的属性还原出图形。至于这个类的属性我上面已经列出来了。
原则上,圆是特殊的椭圆(长轴与短轴相等),所以定义一个椭圆类即可。矩形也是一样的道理。
------解决方案--------------------
引用:
就是一个类的对象,你可以序列化为xml保存,然后再反序列化为对象,根据对象的属性还原出图形。至于这个类的属性我上面已经列出来了。
原则上,圆是特殊的椭圆(长轴与短轴相等),所以定义一个椭圆类即可。矩形也是一样的道理。


需要不需要一个数组,来存每一个椭圆或者正方形的id?

我参考了一个程序,请问这个啥意思?

        protected GraphicsList(SerializationInfo info, StreamingContext context)
        {
            graphicsList = new DrawList();

            int n = info.GetInt32(entryCount);
            string typeName;
            DrawObject drawObject;

            for (int i = 0; i < n; i++)
            {
                typeName = info.GetString(String.Format(CultureInfo.InvariantCulture,"{0}{1}",entryType, i));

                drawObject = (DrawObject)Assembly.GetExecutingAssembly().CreateInstance(
                    typeName);

                drawObject.LoadFromStream(info, i);

                graphicsList.Add(drawObject);