2012-02-16 53 views
1

我想將SVG用作可縮放的背景圖像(例如,圓角矩形作爲按鈕的背景)。我的問題是,按鈕的大小取決於按鈕的內容 - 例如其文本。現在我需要一種方法來繪製我的SVG的不同大小和方面,但具有相同的線寬和半徑。在不影響線寬和半徑的情況下使用Qt來縮放SVG

在我的方法,我使用100%的寬度和高度

<?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> 

一個SVG和渲染它作爲背景:

void paintEvent(QPaintEvent * pEvent) 
{ 
    QPainter oPainter(this); 
    QSvgRenderer oRenderer(QString("../share/images/background.svg")); 
    oRenderer.render(&oPainter, pEvent->rect()); 
} 

但是,這給了我同樣扭曲的結果作爲使用FIX-寬度SVG。此外,我嘗試QSvgRenderer::setViewPort()沒有任何積極的影響。

最好的問候,

查理

回答

2

線寬的要求是相當容易:添加vector-effect="non-scaling-stroke"到您的SVG:

<rect id="rect0815" vector-effect="non-scaling-stroke" x="0" ... /> 

我知道沒有辦法阻止半徑的比例分開首次繪製/調整按鈕時重新計算它並動態更新SVG。但是,這幾乎打破了SVG的觀點。你可以做計算並直接繪製它。

+0

和with/height的%-value不符合標準嗎? (即使它使用Firefox) – Charly 2012-02-17 09:00:24

相關問題