欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > Qt 非圆角图片裁剪为圆角图片

Qt 非圆角图片裁剪为圆角图片

2025/5/29 20:52:58 来源:https://blog.csdn.net/amyliyanice/article/details/139674958  浏览:    关键词:Qt 非圆角图片裁剪为圆角图片

将Qt非圆角图片裁剪为圆角图片,步骤如下:

        1、按照原始图片尺寸定义一张透明的新图形

        2、使用画家工具在新图形上绘制一个圆角矩形线路

        3、绘制图片

        4、使用圆角矩形切割图片边角

封装成函数如下:

        

QPixmap Widget::getRoundedPixmap(const QPixmap srcPixmap, const int radius)
{// 目标图片尺寸QSize desSize = srcPixmap.size();// 新建一个目标大小的画布QpixmapQPixmap desPixMap(desSize);// 填充透明色作为背景desPixMap.fill(Qt::transparent);//以QPixmap 为绘画背景进行画笔绘制QPainter painter(&desPixMap);painter.setRenderHints(QPainter::Antialiasing); //抗锯齿painter.setRenderHints(QPainter::SmoothPixmapTransform); //平滑像素图变换QPainterPath path;//绘制路径//绘制圆角矩形,其中最后两个参数值的范围为(0-99),就是圆角的px值path.addRoundedRect(0, 0, desSize.width(), desSize.height(), radius, radius);// 将绘制的圆角矩形路径中内容进行裁剪painter.setClipPath(path);//将图片绘制到desPixmap中,IgnoreAspectRatio忽视图片比例painter.drawPixmap(0, 0, desSize.width(), desSize.height(), srcPixmap.scaled(desSize, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation));painter.setClipping(false); // 关闭裁剪return desPixMap;
}

使用案例:

// 原始的图片
QPixmap originImg = QPixmap(":/111.png");QPixmap destImg = getRoundedPixmap(originImg,16);ui->label->setPixmap(destImg);

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词