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);
效果展示
热门推荐
Git与GitHub的实战指南:掌握版本控制与团队协作
雪莲果里面有黑色的点点能吃吗 雪莲果发霉切掉能吃吗
八字哪一柱看学历 怎么知道自己的学业运
坚韧性:一种不可阻挡的力量
丁俊晖创造惊人排名赛决赛纪录!揭示中国一哥的不凡心理素质
社交恐惧症的6个等级
昔日大股东43亿“清仓”离场,杭州银行还是“香饽饽”吗?
苏萨:亚历山大大帝的盛大婚礼
青春期的孩子,大脑是怎么运作的?
靶向测序分析
《凡人修仙传》韩立修仙路上的5位师傅,最后1位能和道祖较高下!
龙的足迹:从史前到现代,中国龙文化的千年之旅
新婚夫妻的第一夜,为什么叫“入洞房”?还是古人脑洞大
看日出、喂海鸥、吃海鲜……滨海新区citywalk攻略来啦!
多台电机如何同步控制,多台电机同步控制方法
遭遇威胁怎么办?三种常见威胁情况应对指南
中医视角下的感冒:病因、病机与治疗策略
做一个“真”父亲,而不是“形式”父亲——《如父如子》中的教育启示
斗破苍穹:唐火儿的同人可不多见啊
兰州石化职业技术大学王牌专业 最好的专业是什么
探索英语中表达“幸福”的丰富词汇与短语,感受生活的美好与快乐
视频号分成计划的冷门赛道:从细分领域突破实现高收益
一首诗、一阕词、一壶茶,让人沉醉的乡村农居诗意生活
交通事故后修车赔偿流程是什么?
《勇者斗恶龙10:离线版》五大种族地图 全宝箱钓鱼点收集点标注
叶嘉莹:一首聚会诗,道尽珍重,人生离别最是难忘不舍
Meta元宇宙未来悬而未决?2025年或成战略转向关键年
如何规划一场读书会?读书会设计的6个流程
阴间到底是什么
格鲁吉亚:为何从苏联伟大领袖斯大林的故乡,变成了反俄前沿阵地