进行SVG开发的时候,可以使用的语言有很多钟。其中,JAVA对SVG的支持比较好,而且有相应的开发包。这里就不讲JAVA方面,主要讲一下使用C++进行SVG方面的开发。 不懂SVG的先看我博客的两篇关于SVG方面的文章再来看这篇文章。

SVG是基于XML的可扩展矢量图形。说简单了,它是一个规范,跟C++语言一样。大家只要按照这个规范去编写,SVG解析器就能够把你编写的文件解析并渲染成图形。从这个层面来说,SVG是属于一门语言。

既然它的基础是XML,所以我们只要按照XML的方式来操作SVG文件就OK了,当然,前提是,变量命名和部分格式我们要遵从SVG的规范,因为SVG是XML文件,但XML就不一定是SVG文件啦。所以,我们采用C++进行SVG开发时,就是在遵从SVG规范的前提下,以操作XML的方式来操作SVG文件就OK了。

知道怎么去操作SVG了,我们下一步要做的是寻找如何操作XML的方法,只要知道如何操作XML,就知道如何操作SVG。我们并不需要自己去动手去编写一个XML解析器。目前比较多人用的XML解析器是VC自带的一个组件,具体名称我忘记了,因为我比较注意的是平台无关性的技术;一个是IBM的Xerces C,该方法支持完整的XML规范,只是有个缺点,既你一下子要加载12M的内存模块;最后一个是使用开源类tinyxml类啦,这也是我要介绍的方式。

tinyxml是一个开源的类,你可以将它使用到商业的开发中。我的资源中有个tinyxml的版本可以下载,如果要最新的可以到官方去下。

下面是我写的一个使用tinyxml操作SVG文件的一个例子

 #include  " stdafx.h "
#include  < iostream >
#include  " tixml.h "using   namespace  std;int  main( int  argc,  char *  argv[]){
/生成SVG文件的框架//string temp,tempstring;CString tempstr;//生成SVG文件框架tempstr.Format("<?xml version="1.0"  standalone='no' > ""<!-- IBoard SVG File -->""<svg height="%d" width="%d"> ""<!-- SVG File --> ""</svg>",height,width);temp.append(tempstr);const char* demoStart=temp.data();//若文件名不为空if(filename!="")tempstring.append(filename);elsetempstring.append("iboardfile.svg");const   char *FileName=tempstring.data();TiXmlDocument doc( FileName );doc.Parse( demoStart );if ( doc.Error() ){AfxMessageBox("some error ,fix here");    return -1;}elsedoc.SaveFile();
///使用tinyxml操作SVG文件/TiXmlDocument doc1("iboardfile.svg");bool loadOkay = doc.LoadFile();if(!loadOkay ){return FALSE;}TiXmlNode* node = doc.FirstChild( "svg" );assert(node);//向SVG文件插入一个圆TiXmlElement child("ellipse");child.SetAttribute("cx","50");child.SetAttribute("cy","50");child.SetAttribute("rx","100");child.SetAttribute("ry","100");child.SetAttribute("style","fill:Red;stroke:red");node.InserEndChild(child);doc1.SaveFile();/插入圆成功,保存文件return 0;
}

好了,告诉大家思路了,也演示过了,大家好好玩。
————————————————
版权声明:本文为CSDN博主「Feisy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Feisy/article/details/2459004

使用C++进行SVG开发相关推荐

  1. 基于svg开发绘制地铁图

    中国地铁图 中国地铁图,基于svg开发,支持PC.移动端多种浏览器.覆盖北上广多个城市. 线上开源地址 https://github.com/StavinLi/the-subway-of-china ...

  2. react native多语言_前端福音:为什么使用 React 和 SVG 开发图形 UI 是天作之合?

    本文最初发布于 Data Language 网站,经网站授权由 InfoQ 中文站翻译并分享. React 和 SVG 是一种强大的组合:声明式 UI 组件库与声明式图形语言堪称绝配,是前端开发人员的 ...

  3. 使用SVG开发音乐播放器(三)

    已经有挺长一段时间没有更新了,原因略多啊.最近在弄毕业论文最后的资料整理,然后走出学校租房住了. 面试进了一家物联网公司,总的感觉还不错,就是暂时稍微忙了一些. 很坑的是现在住的地方是傻傻的长城宽带, ...

  4. Web开发中的矢量绘图(vml,svg)处理和应用

    为什么80%的码农都做不了架构师?>>>    前言 1991 年物理学家 Tim Berners-Lee 首次在因特网上发布了 HTML 的第一版描述规范文档.经过了 20 多年的 ...

  5. 使用Batik开发SVG应用程序(一)

    使用Batik开发SVG应用程序 翻译时间 2007-2-6 修订记录 2007-2-23 语言修改 Thierry Kormann ILOG ILOG Les Taissounières HB2 1 ...

  6. svg path绘制心形_SVG 菜鸟的 Recharts 自定义图表实战

    原文作者:IMWeb团队.未经同意,禁止转载. Recharts 是一款图表处理的类库,利用 React 的特性,重新定义了图表的配置和组合方式,大大地提高了图表自定义样式的灵活度.本文记录了使用 R ...

  7. SVG进阶-SMIL动画

    SMIL SMIL是指同步多媒体集成语言(Synchronized Multimedia Integration Language)SVG相关的动画都是基于这种语言标准实现的 SMIL允许你做下面这些 ...

  8. 超级强大的SVG SMIL animation动画详解

    超级强大的SVG SMIL animation动画详解 本文摘自超级强大的SVG SMIL animation动画详解_Zoomla!逐浪CMS官网 (z01.com),网站看上去有年头了,担心哪天会 ...

  9. [转]超级强大的SVG SMIL animation动画详解

    超级强大的SVG SMIL animation动画详解 本文花费精力惊人,具有先驱前瞻性,转载规则以及申明见文末,当心予以追究. 本文地址:http://www.zhangxinxu.com/word ...

  10. 基于svg绘制北京地铁图(官网数据来源)

    北京地铁图 北京地铁图,基于svg开发,支持PC.移动端多种浏览器. 线上开源地址 https://github.com/StavinLi/beiJingSubway 点个赞吧! 项目介绍 技术点 1 ...

最新文章

  1. 深入XP之认识的引导文件NTLDR
  2. java applet 官网_java applet
  3. GPUimage实时滤镜的实现
  4. SetWindowLong
  5. fuse的API修改
  6. Activity中 onResume和onPause与onStart()和onStop()的一些思考
  7. python都有哪些包装_Python基础:21包装
  8. Matrix响应式软件应用类型博客模板
  9. 使用Linux curl命令获取本机公网IP地址
  10. @Scheduled cron表达式
  11. 关于Cocos2d-x中实例伸缩后的位置设置
  12. 40. 若一个类是函数子,则应该使它可配接
  13. kass中lisp文件_自动加载文件目录下的lsp、vlx和fas文件
  14. 2016.2.14-2016.2.21 中大信(北京)工程造价咨询有限公司实习有感
  15. 国家开放大学2021春1135液压气动技术题目
  16. iPad的尺寸与分辨率
  17. ARCH模型的R语言实现
  18. 在editplus中 删除空白行、匹配删除行
  19. 华硕X84L无线驱动查找
  20. 【dubbo】No provider available from registry 127.0.0.1:2181 for service com.dubbo.api.service

热门文章

  1. SQL Server完整性备份说明
  2. 启动FastDFS,安装nginx,整合fdfs与nginx,进行上传下载测试
  3. usc计算机博士游戏专业,USC工科博士专业排名,必然得仔细的看
  4. php curl 命令行,curl 命令行教程
  5. 新华字典mysql_数据库优化篇---MySql索引优化详解
  6. spark保存数据到hbase_Spark读取Hbase中的数据
  7. npm 更新_npm 的安全困扰:仅有 9.27% 的 npm 开发者使用 2FA
  8. bzero函数_Poll 函数
  9. mysql查询更新删除_mysql查询,更新(text类型),删除关联操作
  10. android向DDR读写数据,解决刷机回安卓时提示:Romcode/初始化DDR/读取初始化结果/USB...的问题...