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); }