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);
效果展示
热门推荐
网联平台清算账户是什么
怎么把苹果手机的照片传到电脑?苹果手机照片导入到电脑的6种方法详解
刑事辩护中的辩护意见书撰写
破坏计算机系统信息系统罪:对现代社会的影响与应对策略
19世纪欧洲浪漫主义:一场改变艺术史的革命
传承英烈精神,汲取奋进力量!江苏各地开展烈士纪念日活动
烈士遗属待遇政策,国家对烈士家属待遇
火葬:环保与科学的殡葬选择
土葬:历史、文化与情感的纽带
甘蔗吃多了会得糖尿病吗?一天吃多少合适?
《节奏盒子》:当音乐遇上情感,一场独特的游戏体验
纸短情长,共述经典中的亲情力量
Scratch课程:儿童编程启蒙的最佳选择
冬季养生必备:蘑菇炒肉的低脂高蛋白之道
红蘑炒肉:健康美味的秘密武器!
哈尔滨松花江冰雪大世界冬季游玩全攻略
1945年,为何投在日本广岛的原子弹,要在离地580米的高空爆炸?
微信投诉对方诈骗,钱会退回来吗?
春节防诈骗指南:武汉警方提醒这些诈骗手法需警惕
中药泡酒,越久越好?
大白话解读权责发生制与收付实现制
大白话解读权责发生制与收付实现制
从11部豆瓣9分韩剧看当代社会情感需求
数据科学的核心概念和前沿技术
赵丽蓉逝世23年,经典角色仍被热议
枳实泡酒的做法:如何正确泡酒,泡酒比例与配方解析
喜羊羊与灰太狼:20年,陪伴一代人的童年回忆
哈尔滨冰雪大世界:冬季旅行健康攻略
哈尔滨极寒户外活动装备大揭秘!
哈尔滨冬季自驾游:你的车准备好没?