有时候需要绘制类似qq头像的圆形头像,可以利用QT中2D绘图的API实现。
效果图:
具体代码如下:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPixmap>
#include <QPainterPath>
#include <QPainter>
#include <QString>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//设置椭圆的长轴、短轴
int w = ui->label->width();
int h = ui->label->height();
QPixmap pixmapa("head.jpg");
QPixmap pixmap(w,h);
pixmap.fill(Qt::transparent);
QPainter painter(&pixmap);
painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
QPainterPath path;
path.addEllipse(0, 0, w, h); //绘制椭圆
painter.setClipPath(path);
painter.drawPixmap(0, 0, w, h, pixmapa);
ui->label->setPixmap(pixmap);
}
MainWindow::~MainWindow()
{
delete ui;
}