0

使用带有纹理的 QBrush 时,有没有一种简单的方法可以摆脱平铺?

QImage*   texture = CreateQImage();       // create texture
QBrush*   brush   = new QBrush(*texture); // create texture brush
QPainter* painter = CreateQPainter();     // create painter

painter->fillRectangle(0, 0, 500, 500, *brush);

假设我们有一个大小为 20x20 像素的 QImage 纹理。上面的代码将把这个纹理平铺在整个被填充的矩形上。有没有一种简单的方法可以只绘制这个纹理的一个实例?QBrush 的使用至关重要。

从理论上讲,我可以重新加载以 QBrush 作为输入的 QPainter 的每个填充和绘制方法,并使用

QPainter.drawImage()
方法,但我认为必须有一个更简单的方法。

谢谢,托尼。

4

1 回答 1

0

我认为没有(请参阅Qt::BrushStyle - 唯一带有纹理平铺的样式),并且它不会真正使 IMO 有意义。如果您只想要一张图像,请使用drawImage您所说的功能。

(不平铺的问题之一是:你用什么填充矩形的其余部分?什么都没有?一些默认背景颜色?一些其他QBrush属性?)

于 2011-07-14T14:13:15.233 回答