当前位置: 首页 > news >正文

Qt中用于图像缩放的核⼼⽅法QPixmap::scaled

QPixmap::scaled是Qt中用于图像缩放的核⼼⽅法,其作⽤和⽤法如下:


一、核心作用

  1. 图像尺寸调整
    根据指定尺寸对图像进⾏等⽐例或⾮等⽐例缩放,⽀持放⼤和缩⼩操作。
  2. 保持宽高比
    通过AspectRatioMode参数控制是否保持原始图像的宽⾼⽐。
  3. 渲染质量优化
    提供快速变换(FastTransformation)和平滑变换(SmoothTransformation)两种模式,平衡性能与画质。

二、参数详解

1. ‌基本参数
QPixmap scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio,Qt::TransformationMode transformMode = Qt::FastTransformation) const
  • size‌:目标尺寸(QSizewidth, height)。
  • aspectRatioMode‌:宽⾼⽐控制模式,可选:
    • Qt::IgnoreAspectRatio:忽略宽⾼⽐,强制拉伸⾄目标尺寸。
    • Qt::KeepAspectRatio:保持宽⾼⽐,缩放到最⼤内接矩形。
    • Qt::KeepAspectRatioByExpanding:保持宽⾼⽐,缩放到最⼩外接矩形。
  • transformMode‌:渲染质量模式:
    • Qt::FastTransformation:快速但可能有锯齿。
    • Qt::SmoothTransformation:平滑但性能开销较⼤。
2. ‌重载版本
QPixmap scaled(int width, int height, ...)  // 直接指定宽高

三、典型用法示例

1. ‌等比例缩放(常用)
QPixmap pixmap("image.png");
QPixmap scaled = pixmap.scaled(400, 300, Qt::KeepAspectRatio, Qt::SmoothTransformation);
  • 保持原始宽⾼⽐,缩放到不超过400×300的最⼤尺寸。
2. ‌强制拉伸填充
pixmap.scaled(200, 200, Qt::IgnoreAspectRatio);  // 可能变形
3. ‌高质量放大
pixmap.scaled(800, 600, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation);

四、应用场景

  1. 控件适配
    QLabel中显示缩放后的图像时,通常结合setScaledContents(true)使图像⾃适应控件⼤⼩。
  2. 性能优化
    ⼤图缩⼩时优先使⽤FastTransformation,⼩图放⼤时推荐SmoothTransformation
  3. 动态交互
    在⿏标滚轮缩放等交互场景中动态调⽤scaled

五、注意事项

  • 内存管理‌:缩放会⽣成新图像,需避免频繁调⽤。
  • SVG与PNG差异‌:SVG⽮量图缩放⽆失真,PNG位图可能失真。
  • DPI适配‌:⾼分辨率屏幕需结合devicePixelRatio调整。
http://www.dtcms.com/a/343868.html

相关文章:

  • 编写Linux下设备驱动时两种方案:内核态驱动开发和用户态驱动开发
  • --- 使用OpenFeign来优雅的对服务进行调用 ---
  • vue2怎么修改el-table样式
  • 金融风控AI引擎:实时反欺诈系统的架构设计与实现
  • CTFSHOW | 其他篇题解(二)web417 - web437
  • 进程间通信-IPC机制
  • 【开发日记】SpringBoot 实现支持多个微信小程序的登录
  • 初始数据结构——反射、枚举与Lambda的奇幻冒险
  • 如何理解AP服务发现协议中“如果某项服务需要在多个网络接口上提供,则应为每个网络接口使用一个独立的服务器服务实例。”?
  • 《Linux 网络编程一:网络编程导论及UDP 服务器的创建与数据接收》
  • “我 / 店模式” 靠联盟 + 积分破局,实现三方共赢!
  • 【Oracle】内存管理实战指南:ASMM vs AMM 配置全解析
  • Rust Web开发指南 第一章
  • 服务发现实例和服务实例是不同的
  • 血管介入医疗AI发展最新方向与编程变革:从外周、神经到冠脉的全面解析
  • RabbitMQ面试精讲 Day 27:常见故障排查与分析
  • yggjs_rlayout使用教程 v0.1.0
  • Linux系统之Ubuntu安装cockpit管理工具
  • Jenkins发布spring项目踩坑——nohup java -jar发布后显示成功,但实际jps查询并未运行
  • React 学习笔记1 组件、State
  • 【Tech Arch】Hadoop YARN 大数据集群的 “资源管家”
  • 企业级知识库+智能客服地大模型对比表
  • 实现自己的AI视频监控系统-第一章-视频拉流与解码4(重点)
  • MATLAB启动路径MATLAB202X/bin更改问题
  • 【Python】-- 机器学习项目 - 基于逻辑回归算法的乳腺癌数据集分类
  • 理解AI 智能体:智能体架构
  • DAY14-新世纪DL(DeepLearning/深度学习)战士:破(优化算法)2
  • k8sday14数据存储(2/2)
  • BigData大数据应用开发学习笔记(03)离线处理--数据仓库Hive
  • 直播预约 | CATIA MODSIM SmartCAE带练营第3期:让每轮设计迭代都快人一步!