代码之家  ›  专栏  ›  技术社区  ›  Matphy

从qimage创建qtextureimage

  •  1
  • Matphy  · 技术社区  · 7 年前

    有办法创造 Qt3DRender.QTextureImage QImage 是吗?

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

    我只知道 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())
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Matphy    7 年前

    夸脱

    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)