qt图片周围锯齿_Qt 2D绘图之二:抗锯齿渲染和坐标系统

本文介绍了Qt中的抗锯齿渲染技术,包括逻辑绘图、物理绘图及其产生的锯齿现象,以及如何通过QPainter的渲染提示启用抗锯齿功能。此外,还详细讨论了Qt的坐标系统,包括坐标系统简介、变换方法(平移、缩放、旋转和扭曲)以及"窗口-视口"转换,帮助理解逻辑坐标与物理坐标的映射关系。
摘要由CSDN通过智能技术生成

一、抗锯齿渲染

1.1 逻辑绘图

图形基元的大小(宽度和高度)始终与其数学模型相对应,下图示意了忽略其渲染时使用的画笔的宽度的样子。

1.2 物理绘图(默认情况)

在默认的情况下,绘制会产生锯齿,并且使用这样的规则进行绘制: 当使用宽度为一个像素的画笔进行渲染时,像素会在数学定义的点的右边和下边进行渲染,如下图1所示。当使用一个拥有偶数像素的画笔进行渲染时,像素会在数学定义的点的周围对称渲染;而当使用一个拥有奇数像素的面笔进行渲染时,首先按照偶数对称绘制,最后一个像素会被渲染到数学定义的点的右边和下边,如下图2所示。

所以看起来图像不是很平滑,像是有锯齿,所以为了消锯齿,就要用到抗锯齿绘图。

1.3 抗锯齿绘图

抗锯齿( Anti-aliased)又称为反锯齿或者反走样,就是对图像的边缘进行平滑处理,使其看起来更加柔和流畅的一种技术。QPaint er 进行绘制时可以使用QPainter ::RenderHint 渲染提示来指定是否要使用抗锯齿功能,RenderHint 取值分为以下三种。

如果在绘制时使用了抗锯齿渲染提示,即使用 QPainter:: setRenderHint(RenderHint hint, bool on = true) 函数,将参数 hint 设置为了 QPainter:: Antialiasing。那么像素就会在数学定义的点的两侧对称的进行渲染,如下图所示。

示例程序为:

QPainter painter(this);

painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); //抗锯齿和使用平滑转换算法

二、坐标系统

2.1 坐标系统简介

Qt的坐标系统是由QPainter类控制的,而QPainter是在绘图设备上绘制的。一个绘图设备的默认坐标系统中原点(0, 0)在其左上角,x坐标向右增长,y坐标向下增长。在基于像素的设备上,默认的单位是一个像素,而在打印机上默认的单位是一个点(1/72英寸)。

下面仍然在上一节的程序中进行代码演示,更改paintEvent()的内容如下:

void Widget::paintEvent(QPaintEvent *)

{

QPainter painter(this);

painter.setBrush(Qt::red);

painter.drawRect(0, 0, 100, 100);

painter.setBrush(Qt::yellow);

pain

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值