新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论SVG, GML, X3D, VRML, VML, XAML, AVALON, Batik等基于XML的图形技术,以及有关GIS的应用。
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 SVG/GML/VRML/X3D/XAML 』 → 各位高手又没有C++和svg编程的书或例子阿,急!! 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 4307 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 各位高手又没有C++和svg编程的书或例子阿,急!! 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     天啦 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:22
      积分:163
      门派:XML.ORG.CN
      注册:2004/12/29

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给天啦发送一个短消息 把天啦加入好友 查看天啦的个人资料 搜索天啦在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看天啦的博客楼主
    发贴心情 各位高手又没有C++和svg编程的书或例子阿,急!!

    最近公司要把系统移植到Liunx系统下面,图形还要用SVG,这方便我不太熟悉,买书又没找到,所以还请高手多多帮忙,先谢了!

       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/1/17 8:40:00
     
     zhiyu-2000 美女呀,离线,快来找我吧!
      
      
      等级:大三(面向对象是个好东东!)
      文章:77
      积分:547
      门派:XML.ORG.CN
      注册:2004/12/3

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给zhiyu-2000发送一个短消息 把zhiyu-2000加入好友 查看zhiyu-2000的个人资料 搜索zhiyu-2000在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看zhiyu-2000的博客2
    发贴心情 
    这是用c++生成svg的一段代码
    一个是建立空的svg文档,一个是加入svg的根节点,你看看吧!


    //建立空的SVG文档
    BOOL CMXVSVG::CreateNullSVGDocAndPI()
    {
     HRESULT hr;
     hr = CoCreateInstance(MSXML::CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER,
      MSXML::IID_IXMLDOMDocument, (void**)&m_pSVGDOMDocument);
     if(FAILED(hr))
      return FALSE;
     VARIANT varType;
     VARIANT varValue;
        BSTR bstrName;
        BSTR bstrNameSpaceURI;
     MSXML::IXMLDOMNode* pPIISVGDOMNode = NULL;
     MSXML::IXMLDOMNode* pTmpISVGDOMNode = NULL;
     MSXML::IXMLDOMAttribute* pISVGDOMAttribute = NULL;
     MSXML::IXMLDOMNamedNodeMap* pISVGDOMNamedNodeMap = NULL;
     VariantInit(&varType);
     VariantInit(&varValue);
     //构造xml文件的预处理指令
     varType.vt = VT_BSTR;
     varType.bstrVal = _com_util::ConvertStringToBSTR("processinginstruction"); 
     bstrName = _com_util::ConvertStringToBSTR("xml"); //xml 不能用大写的
     bstrNameSpaceURI = _com_util::ConvertStringToBSTR(""); 
     hr = m_pSVGDOMDocument->createNode(varType,bstrName,bstrNameSpaceURI,&pPIISVGDOMNode);
     if(FAILED(hr))
     {
      VariantClear(&varType);
      VariantClear(&varValue);
      return FALSE;
     }
     hr = m_pSVGDOMDocument->appendChild(pPIISVGDOMNode,&pPIISVGDOMNode);
     if(FAILED(hr))
     {
      VariantClear(&varType);
      VariantClear(&varValue);
      return FALSE;
     }
     
     //为预指令添加standalone 属性
     varType.vt = VT_BSTR;
     varType.bstrVal = _com_util::ConvertStringToBSTR("attribute");
     bstrName = _com_util::ConvertStringToBSTR("standalone");
     bstrNameSpaceURI = _com_util::ConvertStringToBSTR("");
     hr = m_pSVGDOMDocument->createNode(varType,bstrName,bstrNameSpaceURI,(MSXML::IXMLDOMNode**)&pISVGDOMAttribute); 
     if(FAILED(hr))
     {
      VariantClear(&varType);
      VariantClear(&varValue);
      return FALSE;
     }
     varValue.vt = VT_BSTR;
     varValue.bstrVal = _com_util::ConvertStringToBSTR("no");
     hr = pISVGDOMAttribute->put_nodeValue(varValue);
     if(FAILED(hr))
     {
      VariantClear(&varType);
      VariantClear(&varValue);
      return FALSE;
     }
     hr = pPIISVGDOMNode->get_attributes(&pISVGDOMNamedNodeMap);
     if(FAILED(hr))
     {
      VariantClear(&varType);
      VariantClear(&varValue);
      return FALSE;
     }
     hr = pISVGDOMNamedNodeMap->setNamedItem(pISVGDOMAttribute,&pTmpISVGDOMNode);
     if(FAILED(hr))
     {
      VariantClear(&varType);
      VariantClear(&varValue);
      return FALSE;
     }
     VariantClear(&varType);
     VariantClear(&varValue);
     return TRUE;
    }


    //建立根节点
    BOOL CMXVSVG::CreateSVGNode()
    {
        int height=1000;
     int width=1000;
     VARIANT varType;
     VARIANT varValue;
        BSTR bstrName;
        BSTR bstrNameSpaceURI;
     MSXML::IXMLDOMNode* pSVGTmpISVGDOMNode = NULL;
     MSXML::IXMLDOMAttribute* pISVGDOMAttribute = NULL;
     MSXML::IXMLDOMNamedNodeMap* pISVGDOMNamedNodeMap = NULL;
     VariantInit(&varType);
     VariantInit(&varValue);
     //创建根节点svg
     varType.vt = VT_BSTR;
     varType.bstrVal = _com_util::ConvertStringToBSTR("element");
     bstrName = _com_util::ConvertStringToBSTR("svg");
        bstrNameSpaceURI = _com_util::ConvertStringToBSTR("");
        HRESULT hr = m_pSVGDOMDocument->createNode(varType,bstrName,bstrNameSpaceURI,&m_pSVGDOMNode);
     if(FAILED(hr))
     {
      VariantClear(&varType);
      VariantClear(&varValue);
      return FALSE;
     }
     hr = m_pSVGDOMDocument->appendChild(m_pSVGDOMNode,&m_pSVGDOMNode);
        if(FAILED(hr))
     {
      VariantClear(&varType);
      VariantClear(&varValue);
      return FALSE;
     }
     //为svg节点加入height属性
     varType.vt = VT_BSTR;
     varType.bstrVal = _com_util::ConvertStringToBSTR("attribute");
     bstrName = _com_util::ConvertStringToBSTR("height"); 
     bstrNameSpaceURI = _com_util::ConvertStringToBSTR("");
     hr = m_pSVGDOMDocument->createNode(varType,bstrName,bstrNameSpaceURI,(MSXML::IXMLDOMNode**)&pISVGDOMAttribute); 
     if(FAILED(hr))
     {
      VariantClear(&varType);
      VariantClear(&varValue);
      return FALSE;
     }
     varValue.vt = VT_I4;
     varValue.lVal =height;
     hr = pISVGDOMAttribute->put_nodeValue(varValue);
     if(FAILED(hr))
     {
      VariantClear(&varType);
      VariantClear(&varValue);
      return FALSE;
     }
     hr = m_pSVGDOMNode->get_attributes(&pISVGDOMNamedNodeMap);
     if(FAILED(hr))
     {
      VariantClear(&varType);
      VariantClear(&varValue);
      return FALSE;
     }
     hr = pISVGDOMNamedNodeMap->setNamedItem(pISVGDOMAttribute,&pSVGTmpISVGDOMNode);
     if(FAILED(hr))
     {
      VariantClear(&varType);
      VariantClear(&varValue);
      return FALSE;
     }
     //为svg节点加入width属性
     varType.vt = VT_BSTR;
     varType.bstrVal = _com_util::ConvertStringToBSTR("attribute");
     bstrName = _com_util::ConvertStringToBSTR("width"); 
     bstrNameSpaceURI = _com_util::ConvertStringToBSTR("");
     hr = m_pSVGDOMDocument->createNode(varType,bstrName,bstrNameSpaceURI,(MSXML::IXMLDOMNode**)&pISVGDOMAttribute); 
     if(FAILED(hr))
     {
      VariantClear(&varType);
      VariantClear(&varValue);
      return FALSE;
     }
     varValue.vt = VT_I4;
     varValue.lVal = width;
     hr = pISVGDOMAttribute->put_nodeValue(varValue);
     if(FAILED(hr))
     {
      VariantClear(&varType);
      VariantClear(&varValue);
      return FALSE;
     }
     hr = m_pSVGDOMNode->get_attributes(&pISVGDOMNamedNodeMap);
     if(FAILED(hr))
     {
      VariantClear(&varType);
      VariantClear(&varValue);
      return FALSE;
     }
     hr = pISVGDOMNamedNodeMap->setNamedItem(pISVGDOMAttribute,&pSVGTmpISVGDOMNode);
     if(FAILED(hr))
     {
      VariantClear(&varType);
      VariantClear(&varValue);
      return FALSE;
     }
     VariantClear(&varType);
     VariantClear(&varValue);
     return TRUE;
    }

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/1/17 9:17:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/11/26 10:40:06

    本主题贴数2,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    46.875ms