【qt】抗锯齿和图像合成

2023-10-09 13:40
文章标签 图像 qt 合成 抗锯齿

本文主要是介绍【qt】抗锯齿和图像合成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

抗锯齿和图像合成

抗锯齿(Anti-aliased)

  1. 计算机上的图像都是以像素为单位显示的,像素其实就是一个一个的小方块,因此显示出来的图像只有完全水平或垂直的直线才可能直的,对于斜线,在未放大的情况下,看起来可能是直线没有抗锯齿,但一旦放大就必然会带有锯齿现象 在这里插入图片描述

  2. 把用于减少锯齿的技术称为抗锯齿、反走样或反锯齿。抗锯齿的算法有很多种,但基本原理其实就是对轮廓线的像素设置不同的灰度值使其产生模糊的效果,从而减轻锯齿

  3. 数学直线,是指在数学上的理想的直线,他是没有宽度的,然而实际上的图形,至少都需要占据一个像素的宽度

  4. 当启用抗锯齿时,像素将在数学定义的点的两侧对称渲染

  5. 未启用抗锯齿时的图形绘制原则 在这里插入图片描述

    1. 当使用一个像素宽的笔绘制图形时,像素将在数学定义的点的右侧和下方
    2. 当使用偶数个像素宽的笔绘制图形时,像素将在数学定义的点的周围对称地渲染
    3. 当使用奇数个像素宽的笔绘制图形时,多余的像素将在数学定义的点的右侧和下方。这与在一个像素宽时类似

枚举

  1. 描述渲染图像时的质量提示,QPainter默认是没有启动抗锯齿的
enum RenderHint {Antialiasing = 0x01,//若有可能,则开启抗锯齿处理TextAntialiasing = 0x02,//若有可能,则文本启用抗锯齿SmoothPixmapTransform = 0x04,//表示使用平滑的像素图变换算法(如双线性)HighQualityAntialiasing = 0x08,NonCosmeticDefaultPen = 0x10,Qt4CompatiblePainting = 0x20
};
Q_FLAG(RenderHint)Q_DECLARE_FLAGS(RenderHints, RenderHint)
Q_FLAG(RenderHints)

函数

  1. 渲染提示
    1. void setRenderHint(RenderHint hint, bool on = true)
    2. void setRenderHints(RenderHints hints, bool on = true)
    3. RenderHints renderHints() const
    4. bool testRenderHint(RenderHint hint) const

示例

抗锯齿处理

#ifndef WIDGET_H
#define WIDGET_H#include <QtWidgets>
class aDrawImage :public QWidget
{Q_OBJECT
private:void init(){}
protected:void paintEvent(QPaintEvent *event) override{Q_UNUSED(event)QPainter painter;painter.begin(this);painter.drawLine(11,11,77,111); //未开启抗锯齿painter.setRenderHint(QPainter::Antialiasing);painter.drawLine(44,11,111,111);//开启抗锯齿painter.setRenderHint(QPainter::SmoothPixmapTransform);painter.drawLine(77,11,144,111);//开启双线性抗锯齿painter.end();}public:aDrawImage(QWidget *p =nullptr) :QWidget(p){ init(); }
};#endif // WIDGET_H

这篇关于【qt】抗锯齿和图像合成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/173212

相关文章

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

Qt 中 isHidden 和 isVisible 的区别与使用小结

《Qt中isHidden和isVisible的区别与使用小结》Qt中的isHidden()和isVisible()方法都用于查询组件显示或隐藏状态,然而,它们有很大的区别,了解它们对于正确操... 目录1. 基础概念2. 区别清见3. 实际案例4. 注意事项5. 总结1. 基础概念Qt 中的 isHidd

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

Java实战之自助进行多张图片合成拼接

《Java实战之自助进行多张图片合成拼接》在当今数字化时代,图像处理技术在各个领域都发挥着至关重要的作用,本文为大家详细介绍了如何使用Java实现多张图片合成拼接,需要的可以了解下... 目录前言一、图片合成需求描述二、图片合成设计与实现1、编程语言2、基础数据准备3、图片合成流程4、图片合成实现三、总结前

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

基于Qt Qml实现时间轴组件

《基于QtQml实现时间轴组件》时间轴组件是现代用户界面中常见的元素,用于按时间顺序展示事件,本文主要为大家详细介绍了如何使用Qml实现一个简单的时间轴组件,需要的可以参考下... 目录写在前面效果图组件概述实现细节1. 组件结构2. 属性定义3. 数据模型4. 事件项的添加和排序5. 事件项的渲染如何使用