微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何用带有自定义图案的矩形填充 QPixMap?

如何解决如何用带有自定义图案的矩形填充 QPixMap?

如果有什么方法可以用这样的自定义图案填充矩形(如果你看不到它,它是一个填充矩形的“+”)?看这里:

look here

现在我设法用 QPainter 和painter.drawRect (x,y,z,b) 创建矩形,并用painter.setBrush (Qt:: Dense1Pattern) 填充它们。但我想用我的自定义图案填充它,所以它创建了一个带有多个矩形的格子图案。

解决方法

如果你想实现一个图案,那么使用 QBrush 并将 QPixmap(或 QImage)设置为纹理:

#include <QApplication>
#include <QLabel>
#include <QPainter>


QPixmap createPattern(const QSize & size,const QColor & background=Qt::white,const QColor & foreground=Qt::black){
    QPixmap pixmap(size);
    pixmap.fill(background);
    {
        QPainter painter(&pixmap);
        painter.setPen(foreground);
        painter.drawLine(0,size.height()/2,size.width(),size.height()/2);
        painter.drawLine(size.width()/2,size.width()/2,size.height());
    }
    return pixmap;
}

int main(int argc,char *argv[])
{
    QApplication a(argc,argv);
    QPixmap pixmap(400,400);
    {
        QPainter painter(&pixmap);
        QBrush brush;
        brush.setTexture(createPattern(QSize(25,25),Qt::green,Qt::yellow));
        painter.fillRect(pixmap.rect(),brush);
    }
    QLabel label;
    label.setAlignment(Qt::AlignCenter);
    label.setPixmap(pixmap);
    label.show();
    return a.exec();
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。