【问题标题】:How to make QPixmap display the svg?如何让 QPixmap 显示 svg?
【发布时间】:2020-11-27 14:18:22
【问题描述】:

我有一个很大的 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)

【问题讨论】:

    标签: python svg pyqt


    【解决方案1】:

    根据QPainter documentation

    如果您在 Qt 的基于光栅的绘制引擎中使用坐标,请务必注意,虽然可以使用大于 +/- 215 的坐标,但任何使用此之外的坐标执行的绘制不保证显示范围;绘图可能会被剪裁。

    这似乎也是对 QImage 和 QPixmap 有效的限制,正如QImage/QPixmap size limitations? 的回答中所解释的那样,这意味着图像只能渲染到 32767x32767。

    您可能想尝试使用QSvgRenderer.render(painter, rect) 来缩放它,或者使用setViewBox() 和基本的render() 来显示它的一部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-22
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-29
      • 1970-01-01
      相关资源
      最近更新 更多