qt之绘制圆形图案(基于QPainter接口)



class QRoundWidget:public QWidget
{
    Q_OBJECT

public:
    QRoundWidget(QWidget *parent=nullptr):QWidget(parent){

        pixmap.load("./1.jpg");
      pixmap=  pixmap.scaled(QSize(640,640));
    }

    void paintEvent(QPaintEvent *event){
        QPainter painter(this);
        int m_radius=320;
        //抗锯齿
        painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
        //绘画路径
        QPainterPath path;
        path.addEllipse(this->rect().center(),m_radius,m_radius);
        painter.setClipPath(path);//裁剪圆型

         painter.setBrush(QBrush(Qt::red)); // 红色填充
        painter.drawPath(path);
        //绘图
        painter.drawPixmap(QRect(0,0,m_radius*2,m_radius*2),pixmap);

    }
private:
    QPixmap pixmap;

};


使用:

    QRoundWidget w;
    w.resize(640,640);
    w.show();

效果:
image

posted @ 2025-09-07 16:49  我不是萧海哇~~~  阅读(16)  评论(0)    收藏  举报