Как заставить QPixmap отображать svg? - PullRequest
0 голосов
/ 07 августа 2020

У меня большой SVG (70000 * 2000), и я хочу отобразить его полностью. Я использовал QPixmap и обнаружил, что он неполный. Это мой код:

self.img = QPixmap('test.svg')
self.scaled_img = self.img

def paintEvent(self, e):
    painter = QPainter()
    painter.begin(self)
    self.draw_img(painter)
    painter.end()

def draw_img(self, painter):
    painter.drawPixmap(self.point, self.scaled_img)

1 Ответ

0 голосов
/ 07 августа 2020

Согласно документации QPainter :

Если вы используете координаты с растровым движком рисования Qt, важно отметить, что хотя координаты больше + / - Можно использовать 2 15 , отображение любого рисунка, выполненного с координатами вне этого диапазона, не гарантируется; рисунок может быть обрезан.

Похоже, что это ограничение действует и для QImage и QPixmap, как объясняется в ответе на Ограничения размера QImage / QPixmap? , что означает, что изображение будет отображаться только до 32767x32767.

Вы можете попробовать использовать QSvgRenderer.render (painter, rect) , чтобы масштабировать его, или setViewBox(), а затем базовый c render(), чтобы показать его части.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...