从 QImage 创建 QTextureImage
Create QTextureImage from QImage
有没有办法从 QImage
创建 Qt3DRender.QTextureImage
?
我的目标是将自定义图像放置在 3D 平面上 space。
只知道QTextureImage
可以打开一些光栅图文件(如.webp)和.jpg[=27=等文件].
它可以从磁盘打开文件:
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())
我是在 Qt 社区的帮助下完成的。
QPaintedTextureImage
是一个抽象 class 因此必须被继承。
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)
有没有办法从 QImage
创建 Qt3DRender.QTextureImage
?
我的目标是将自定义图像放置在 3D 平面上 space。
只知道QTextureImage
可以打开一些光栅图文件(如.webp)和.jpg[=27=等文件].
它可以从磁盘打开文件:
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())
我是在 Qt 社区的帮助下完成的。
QPaintedTextureImage
是一个抽象 class 因此必须被继承。
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)