【问题标题】:QBrush texture without tiling没有平铺的 QBrush 纹理
【发布时间】:2011-07-14 14:06:39
【问题描述】:

在使用带有纹理的 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()
方法,但我认为必须有更简单的方法。

谢谢,托尼。

【问题讨论】:

    标签: qt textures qpainter qimage


    【解决方案1】:

    我不认为有(请参阅Qt::BrushStyle - 唯一带有纹理的样式),而且它不会真正使 IMO 有意义。如果您只想要一张图片,请按照您的说明使用 drawImage 函数。

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

    【讨论】:

    • 是的,矩形的其余部分根本不会被填充。我想达到与 GDI+ 中的WrapModeClamp 相同的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多