菜鸟提问,关于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保存,然后再反序列化为对象,根据对象的属性还原出图形。至于这个类的属性我上面已经列出来了。
原则上,圆是特殊的椭圆(长轴与短轴相等),所以定义一个椭圆类即可。矩形也是一样的道理。
------解决方案--------------------
需要不需要一个数组,来存每一个椭圆或者正方形的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);