在C++中生成 SVG

  • 本文关键字:SVG C++ c++ svg
  • 更新时间 :
  • 英文 :


C++中,只需编写SVG文本文件即可创建SVG文件吗?在Web开发中(考虑到PHP和JS(,可以将SVG作为其他DOM元素进行操作(除非我弄错了(。但是,我只想以该Web样式创建一个SVG(没有阅读,解析,...(。还是只下载一个库更好?

我想将任务的速度(计算和绘制图形(与我们在学校使用的 MatLab 进行比较,我需要一个简单的图形输出解决方案。

我的建议是使用矢量图形编辑器(如Inkscape(免费((设计图形。

然后,您可以在自己喜欢的文本编辑器中打开生成的SVG文件,并将文件的片段保存为字符串以插入到您自己的文件中: 例如,下面是用于绘制圆的文件的一部分:

<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<circle 
style="opacity:0.1;fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-opacity:1"
id="path10"
cx="43.534008"
cy="32.312469"
r="18.520834" />    
</g>

我还会删除无关的信息,例如您不需要的inkscape:labelinkscape:groupmode,尤其是id=,因为您想重用代码。然后将其中的部分保存在静态字符串中(或者更好地保存在数组或结构中(:

const string circleS0 = "<g id="circle1"><circle style="opacity:0.1;fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-opacity:1" id="path10" cx="";
const string circleS1 = "" cy="";
const string circleS2 = ""  r="";
const string circleS3 = "" /> </g>";

重要说明:SVG 格式需要大量双引号,不幸的是,这些双引号必须在 C++ 中转义(就像我上面所做的那样(。

现在,您创建一些变量,其中包含使它成为唯一圆的内容,您可以在所需的位置绘制:

string circleX = "43.534008";
string circleY = "32.312469";
string circleR = "18.520834";

最后,您需要按顺序输出所有部分,但我将其留给您C++技能。

如果没有库,这个例子可能看起来势不可挡,但我这样做是为了创建电缆装配图和文本网格(材料清单(,一点也不难。由于嵌入的图形,我什至在图纸的标题栏中包含客户的徽标。

我不确定我是否明白你在问什么。当然,您可以使用 c++ 编写 SVG 文件,但是如果没有库支持,您必须确保遵循正确的(类似 xml(结构。

如果你想让你的生活更轻松,请使用SVG++(http://svgpp.org/(。

最新更新