QT—— 将方形图片转为圆形,在label上进行显示

QPixmap DefinedTitleBar::PixmapToRound(QPixmap& src, int radius)  //将方形图片转为圆形,在label上进行显示
{
    if (src.isNull()) {
        return QPixmap();
    }

    QSize size(2 * radius, 2 * radius);
    QBitmap mask(size);
    QPainter painter(&mask);
    painter.setRenderHint(QPainter::Antialiasing);
    painter.setRenderHint(QPainter::SmoothPixmapTransform);
    painter.fillRect(0, 0, size.width(), size.height(), Qt::white);
    painter.setBrush(QColor(0, 0, 0));
    painter.drawRoundedRect(0, 0, size.width(), size.height(), 99, 99);

    QPixmap image = src.scaled(size);
    image.setMask(mask);
    return image;
}

使用(放到构造函数里调用即可)

void DefinedTitleBar::_label_show_picture()//,让label显示一张图片
{

    //userPath为图片地址
    QPixmap pixmap_userIcon;
    pixmap_userIcon.load(IMAGE_PATH("suzhouregongyuan.jpg"));
    //将图片剪裁压缩成20x20大小的图
    QPixmap fitpixmap_userIcon = pixmap_userIcon.scaled(58, 58, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
    fitpixmap_userIcon = PixmapToRound(fitpixmap_userIcon, 28);
    ui.label_ico->setPixmap(fitpixmap_userIcon);
}

 原文链接

posted @ 2022-07-28 14:46  雾枫  阅读(627)  评论(0编辑  收藏  举报