PyQt:使用alpha通道而不是预乘颜色通道创建QPixmap
我想创建一个QPixmap来使用QPainter进行绘制。 QPixmap应支持透明度,而不使用预乘颜色通道。
目前,我通过创建具有所需尺寸的QPixmap并使用为每个通道(包括alpha)设置为零的QColor填充它来实现此目的。
tex = QtGui.QPixmap(width, height)
c = QtGui.QColor(0)
c.setAlpha(0)
tex.fill(c)
这增加了QPixmap的透明度。但是,如果我使用QPainter绘制到QPixmap,则绘制的颜色值将乘以源的alpha值预乘。我不希望这样,因为QPixmap稍后用作QGLWidget中的纹理,并且渲染QPixmap的alpha通道(现在使用QPainter绘制的源的alpha)再次与颜色通道相乘,所以alpha乘以两次。
如果我使用格式为QtGui.QImage.Format_ARGB32的QImage代替QPixmap,那么颜色通道不会被预乘,并且alpha只应用一次。但是在渲染过程中这太慢了。我尝试使用上述格式绘制QImages,然后转换为QPixmaps,但得到相同的结果(预乘色彩通道再次乘以alpha通道)。奇趣科技的人说,
根据系统,QPixmap是
使用RGB32或a存储
预乘alpha格式。如果
图像有一个alpha通道,如果有
系统允许,首选格式是
预乘alpha。
我正在使用X(Linux)。当QPixmap具有alpha通道时,有没有办法强制QPixmap不预乘颜色通道?
没有找到相关结果
已邀请:
1 个回复
才脊烽馈低