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();
效果: