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);
效果展示
热门推荐
嘴唇干裂脱皮用什么润唇膏好
补木火最好的方法 缺火是补火还是补木
卷在保险业的985学霸:名校生不断涌入,从年薪百万到佣金缩水五成
后发优势理论:如何在竞争中逆袭成功
白居易《池上》:一首描写儿童生活的诗
“你好你好”成网络社交新方式,持续刷屏快手引热议
如何确定房子的价格构成?这种构成如何反映市场行情?
在设计绩效评估系统时,如何收集员工反馈?
汽车冷却液更换全攻略:何时换?怎么换?一文读懂!
金铲铲之战最新更新内容 魔法乱斗羁绊符文装备调整介绍
iPhone系统基带原理与结构详解
台积电对美国追加1000亿美元投资,三星、SK海力士压力山大
小学语文课外阅读提升方法
介电材料与介电击穿
如何学习羽毛球步伐训练与移动技巧
专升本和三支一扶同时考上怎么办,三支一扶对专升本有利吗
股票尾盘下跌说明什么:尾盘下跌在股票交易中的现象
如何顺利将外省保险转回本地?在转回过程中需要注意哪些事项?
成都养老保险转移流程及超龄人员参保指南
怎么才能优雅地向博士导师表达「这周科研没什么进展」
Word如何排版选择题选项
美国十大科技巨头公司logo设计含义及摄像头品牌标志设计理念
尾盘急跌在股票市场中意味着什么?这种走势对投资者的交易策略有何启示?
车撞金毛怎么处理?一文详解事故处理流程与法律规定
Excel中如何在公式后添加文字
适合在屋顶用的草坪草
唐寅《桃花庵歌》:桃花仙人种桃树,又折花枝当酒钱
主板CPU安装指南:Intel和AMD平台详细步骤
18强赛第7轮赛程出炉!国足客战沙特,央视不直播
产后漏尿不是小事!盆底肌修复黄金期别错过