0

64x64で(0、0)にSVGアイテムを描画すると、実際に表示されるSVGアイテムは65x65で(-0.5、-0.5)からです。これは、SVGアイテムの後ろにバウンディングボックスを描画することで測定しました。そして、SVGアイテムはQGraphicsSceneの半分のユニットで四方に突き出ています。

この効果を取り除くことはできますか?ペンをNoPenに設定しました。縮小することはできますが、それはかなり不正確になります(幅と高さで異なるスケーリングが必要になるため、ほとんど不可能です)。この問題を解決するにはどうすればよいですか?

ここに画像の説明を入力してください

ご覧のとおり、茶色のボックス(SVG)が灰色の領域(境界ボックス)の上に突き出ています。バウンディングボックスはInkscapeで確認されます。

ありがとう

4

1 に答える 1

0

変換を使用して解決策を見つけました:

QSvgRenderer *test = new QSvgRenderer(QLatin1String("test.svg"));

QGraphicsSvgItem *item = new QGraphicsSvgItem();
item->setSharedRenderer(test);
addItem(item);

// the following transformation is required if you want the SVG to be exactly on the spot and as big as it should be
item->setTransform(QTransform(test->viewBoxF().width() / (test->viewBoxF().width() + 1.0), 0.0, 0.0, test->viewBoxF().height() / (test->viewBoxF().height() + 1.0), 0.5, 0.5));
于 2011-09-28T11:39:09.027 に答える