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);
效果展示
热门推荐
周平王与郑庄公:权力博弈中的君臣关系
纳米载体在癌症治疗中的应用进展
解锁丹江口旅游新玩法:运动、浪漫、山水、露营四条特色路线等你来
李白《长相思》赏析:结构之美与情感之深
北京六大湿地公园:各有千秋的夏日度假胜地
轻松搞定日本签证材料准备
家里怎么做隔音?超详细攻略(设计师手册)
掉进黑洞真的会死去吗?
当“养女”遇到继承纠纷,遗产怎么分配?
健美与功能性训练有何区别?深度解析各类健身训练特点与实用性
历史评价:刘邦与刘备的抛妻弃子行为
历史解读:刘邦形象的多面性与小人标签的由来
急性肠胃炎能喝水么
优秀的运动员,为什么离不开牛奶的“加持”?
一根玉米多少大卡
糖尿病患者可以吃烤鸭和烤鸡吗?医生给出专业建议
对日本的十八个称呼?
房地产企业破产视域下购房者权益优先保护制度研究
破产重整到破茧重生!“府院联动”指挥棒 助推破产房企向阳而生
如何帮助学生调节考试焦虑
哪些食物富含叶黄素,对眼睛有益?医生来解答
农学类专业跨专业考研方向
胆结石能吃蒲公英吗
脑挫裂伤和颅内血肿的区别在哪
从中心主题开始,绘制你的知识地图
眼睛浮肿的原因及应对方法
凤梨怎样算坏掉?
农历天干地支查询:如何快速计算年月日的干支纪年
薄荷——夏季里的可食、驱蚊虫神器
10种管理愤怒的方法