RT

解决方案 »

  1.   

    Base64的算法你搜索一下,很多的,就是用4字节的字符表示3字节的二进制数据
      

  2.   

    我不是要base64的算法,我问的是如何用XML保存你画好的图,比如你画了UML图,把它保存为XML文件,下次导入XML后,图还原。
      

  3.   

    我做的不是WEB程序,是WINDOWS程序,我知道可用序列化和反序列化,用二进制的格式保存和还原。但是现在要求用XML来保存。
    怎么办?有没有例子??
      

  4.   

    是矢量图么?
    那可以参考SVG.http://www.w3.org/Graphics/SVG/
    就是保存矢量图元的各项属性.
    如矩形保存为
    <rect stroke_width="1' fill_color="0xff0000" />
    上述是文件格式, 所以内存中应有类似CRectangle这样的类来保存从文档中load的值,和描画等.如果是位图.
    可以用楼上说的Base64来保存位图的点阵信息.或另存成bmp文件, xml里只保存个路径.
    <image target="c:\logo.bmp" x="10" y="10" />xml的存取可以通过系统提供的xml接口完成, 方便好用.另:"你画好的图"是以什么方式存, 应说得清楚一些.
      

  5.   

    多谢老将,我画的是矢量图,但是有的图元中是直接从WINDOWS控件继承下来的,比如一个PictureBox控件,这样的控件如何用XML保存和还原呢?
      

  6.   

    其实xml文档里记录的都是些标记,完全是你自己定义的.
    比如定义这些元素.MyControl, 属性有 ParentCtrl
    <MyControl ParentCtrl="PictureBox" />
    关键是你怎么解释"PictureBox"字串的意义, 容易想到的作法.
    if( IsMyControl() )
      if( strcmp(ParentCtrl, "PictureBox") == 0 )
      {
          CWnd *pWnd;
          pWnd->CreateEx(...); //Use PictureBox Style.
      }
      else if(strcmp(ParentCtrl, "ComboBox") == 0 )
      {
       ....
      }