Qt中将非圆角图片裁剪为圆角图片的实现方法
创作时间:
作者:
@小白创作中心
Qt中将非圆角图片裁剪为圆角图片的实现方法
引用
CSDN
1.
https://m.blog.csdn.net/amyliyanice/article/details/139674958
在Qt开发中,有时需要将普通的矩形图片处理为圆角图片以提升界面美观度。本文将详细介绍如何在Qt中实现这一功能,包括具体步骤、代码实现以及使用示例。
实现步骤
将Qt非圆角图片裁剪为圆角图片,具体步骤如下:
- 按照原始图片尺寸定义一张透明的新图形
- 使用画家工具在新图形上绘制一个圆角矩形线路
- 绘制图片
- 使用圆角矩形切割图片边角
代码实现
以下是将上述步骤封装成的函数:
QPixmap Widget::getRoundedPixmap(const QPixmap srcPixmap, const int radius)
{
// 目标图片尺寸
QSize desSize = srcPixmap.size();
// 新建一个目标大小的画布Qpixmap
QPixmap 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);
效果展示
热门推荐
兰州上榜春节非遗热门目的地 实现旅游花费245595.32万元
LPL转会基本大结局,头部几家队伍的阵容已确定,全神班IG来咯!
常用家电待机1个月耗费多少电?有的电器让人意想不到
荒岛求生指南说明书
珠海港行业分析报告
猪油、花生油、玉米油……到底哪种油更健康?
AI数字人:多元场景下的作用与影响
国歌的文化意义与国际影响:从历史演变到当代争议
和章泽天一样,喝咖啡手抖,是得帕金森的预兆吗?
探秘山城:重庆小众景点旅行指南,错过必悔!
冬季呵护指南:25个幼儿保健注意事项,如何为孩子筑起温暖防线?
预计2025年2月投入使用 西安咸阳国际机场T5航站楼有哪些新亮点?
家长必读:如何从语言中识别青少年抑郁迹象
三文鱼:深海的美味传奇,营养与健康的使者
国礼瓷的意义
都是捐赠日军侵华相册,怎么埃文·凯尔爆火,马库斯却不为人知?
揭秘TWS耳机主动降噪原理与技术详解
万科大变天!郁亮、祝九胜辞任,新掌舵面临更大挑战!
白鹤滩水电站:总投资超2200亿,如今3年过去了,国家收回成本了吗?
应对偏头痛:从日常护理到预防
车厘子浑身是宝!但注意,这7类人要少吃!
一万元人民币在朝鲜能过多久?答案出乎意料
十二生肖相冲相克表,解读传统文化的奥秘
常见汽车类型有哪些?来看看你属于哪一款!
夜视仪的历史、发展及其未来前景
“抢人大战”落幕:深圳、杭州提高引才门槛
迷你主机选购避坑指南:2024年最新攻略
当代社会单亲妈妈现象的背后原因
孔子为何离开鲁国?一场权力斗争下的无奈抉择
风水命理入门指南:从基础概念到实践应用