我想将SVG用作可缩放的背景图像(例如,圆角矩形作为按钮的背景)。我的问题是,按钮大小取决于按钮内容 - 例如它的文字。现在我需要一种方法来绘制不同大小和方面的SVG,但具有相同的线宽和半径。
在我的方法中,我使用了一个宽度和高度为100%的SVG
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg">
<rect id="rect0815" x="0" y="0" width="100%" height="100%" rx="15" ry="15"
fill="red" stroke="#000000" stroke-width="2"/>
</svg>
并将其渲染为背景:
void paintEvent(QPaintEvent * pEvent)
{
QPainter oPainter( this );
QSvgRenderer oRenderer( QString("../share/images/background.svg") );
oRenderer.render( &oPainter, pEvent->rect() );
}
但这给了我与使用固定宽度SVG相同的失真结果。我也尝试QSvgRenderer::setViewPort()
没有任何积极的影响。
致以最诚挚的问候,
查理
答案 0 :(得分:2)
行宽请求非常简单:将vector-effect="non-scaling-stroke"
添加到SVG:
<rect id="rect0815" vector-effect="non-scaling-stroke" x="0" ... />
我知道在首次绘制/调整按钮并动态更新SVG时,无法防止半径缩放重新计算。但是,这几乎打败了SVG的观点;你不妨进行计算并直接绘制它。