SVG 在 QT 中加载黑色
SVG Loading Black In QT
我正在尝试在 Qt 中加载 svg 图像,但它一直显示为黑色。我打开示例项目 'SVGViewer' 并加载我的文件,因此代码应该不是问题,因为它适用于示例中包含的 svg 文件。
我在 Inkscape v0.91 中制作了我的 svg,我尝试将它保存为 Inkscape svg 和普通 svg 格式,并且都显示为黑色。我所包含的只是一行纯文本,只是为了看看我是否可以加载它。
是否需要设置一些其他 Inkscape 设置才能使其正确显示?
编辑:
查看我的 svg 文件可能会有所帮助
Test SVG File
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
id="svg2"
viewBox="0 0 744.09448819 1052.3622047"
height="297mm"
width="210mm">
<defs
id="defs4" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1">
<flowRoot
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="flowRoot3336"
xml:space="preserve"><flowRegion
id="flowRegion3338"><rect
y="149.50507"
x="62.857143"
height="54.285713"
width="162.85715"
id="rect3340" /></flowRegion><flowPara
id="flowPara3342">ABC123</flowPara></flowRoot> </g>
</svg>
<flowRoot>
、<flowRegion>
等是 SVG 1.2 元素。我相信 Inkscape 是目前唯一支持 SVG 1.2 的流动文本功能的程序。没有浏览器可以,而且我不知道有任何其他 SVG 渲染器可以。
使用 Inkscape 的流动文本功能来设计您的 SVG 文件是很好的。但是,如果您希望它们与其他渲染器一起使用,则需要在保存文件之前将那些流动的文本块转换为普通文本元素。
有关操作方法,请参阅此 Inkscape 帮助页面底部的说明。
我正在尝试在 Qt 中加载 svg 图像,但它一直显示为黑色。我打开示例项目 'SVGViewer' 并加载我的文件,因此代码应该不是问题,因为它适用于示例中包含的 svg 文件。
我在 Inkscape v0.91 中制作了我的 svg,我尝试将它保存为 Inkscape svg 和普通 svg 格式,并且都显示为黑色。我所包含的只是一行纯文本,只是为了看看我是否可以加载它。
是否需要设置一些其他 Inkscape 设置才能使其正确显示?
编辑:
查看我的 svg 文件可能会有所帮助
Test SVG File
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
id="svg2"
viewBox="0 0 744.09448819 1052.3622047"
height="297mm"
width="210mm">
<defs
id="defs4" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1">
<flowRoot
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="flowRoot3336"
xml:space="preserve"><flowRegion
id="flowRegion3338"><rect
y="149.50507"
x="62.857143"
height="54.285713"
width="162.85715"
id="rect3340" /></flowRegion><flowPara
id="flowPara3342">ABC123</flowPara></flowRoot> </g>
</svg>
<flowRoot>
、<flowRegion>
等是 SVG 1.2 元素。我相信 Inkscape 是目前唯一支持 SVG 1.2 的流动文本功能的程序。没有浏览器可以,而且我不知道有任何其他 SVG 渲染器可以。
使用 Inkscape 的流动文本功能来设计您的 SVG 文件是很好的。但是,如果您希望它们与其他渲染器一起使用,则需要在保存文件之前将那些流动的文本块转换为普通文本元素。
有关操作方法,请参阅此 Inkscape 帮助页面底部的说明。