Qt QGraphicsSvgItem рендерится слишком большим (0,5 единицы с каждой стороны)

Если я нарисую элемент SVG в (0, 0) с 64x64, фактически отображаемый элемент SVG будет из (-0,5, -0,5) с 65x65. Я измерил это, нарисовав ограничивающую рамку за элементом SVG. И элемент SVG торчит во все стороны на полединицы на QGraphicsScene.

Могу ли я удалить этот эффект? Я установил перо на NoPen. Я мог бы уменьшить его, но это было бы довольно неточно (поскольку ширина и высота требуют разного масштабирования, что вряд ли возможно). Как я могу решить эту проблему?

введите здесь описание изображения

Как видите, коричневые прямоугольники (SVG) выступают над серой областью (ограничивающей рамкой). Ограничительная рамка подтверждается Inkscape.

Спасибо


person Taco de Wolff    schedule 25.09.2011    source источник


Ответы (1)


Нашел решение с помощью преобразования:

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));
person Taco de Wolff    schedule 28.09.2011