【问题标题】:Create QTextureImage from QImage从 QImage 创建 QTextureImage
【发布时间】:2018-06-20 09:00:17
【问题描述】:

有没有办法从QImage 创建Qt3DRender.QTextureImage

我的目标是将自定义图像放置在 3D 空间中的平面上。

我只知道QTextureImage可以打开一些光栅图像文件(如.webp)和.jpg等文件。

它可以从磁盘打开文件:

material = Qt3DExtras.QNormalDiffuseSpecularMapMaterial()
material.setTextureScale(1)
material.setAmbient(QColor.fromRgbF(1, 1, 1, 0))

image = Qt3DRender.QTextureImage()
image.setSource(QUrl("file:test.jpg"))
material.normal().addTextureImage(image)
plane_entity.addComponent(material)

我想做这样的事情:

image.setSource(QImage())

【问题讨论】:

    标签: opengl qt5 pyqt5 qt3d pyside2


    【解决方案1】:

    我在 Qt 社区的帮助下做到了。

    QPaintedTextureImage 是一个抽象类,因此必须被继承。

    class Image(Qt3DRender.QPaintedTextureImage):
        def __init__(self, parent=None):
            super().__init__(parent)
            self._image = None
    
        def paint(self, painter):
            rect = QRect(0, 0, self._image.width(), self._image.height())
            painter.drawImage(rect, self._image, rect)
    
        def set_image(self, image):
            self._image = image
            self.setSize(image.size())
            painter = QPainter()
            self.paint(painter)
    
    self.image = Image()
    self.image.set_image(image)  # type(image): QImage
    self.material.normal().addTextureImage(self.image)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-31
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      • 1970-01-01
      • 2016-09-19
      • 2021-07-31
      相关资源
      最近更新 更多