本节的内容可以在帮助中通过Coordinate System关键字查看。
或者入门可以看《Qt Creator 快速入门》这本书。强烈推荐入门使用。下面的内容为本书的阅读笔记,喜欢的可以买一本放在床头。
 
大纲:
Qt坐标系统简介
抗锯齿渲染
 
Qt坐标系统 
Qt的坐标系统是由QPainter类控制的,而QPainter是在绘图设备上进行绘制的。
在基于像素的设备上,默认的单位是一个像素,而在打印机上默认的单位是一个点(1/72英寸)。
一个绘图设备的默认坐标系统中,原点(0,0)在其左上角,x坐标向右增长,y坐标向下增长。
.—————> x
|
|
|
y
 
注意: 对于嵌套窗口,其坐标是相对于父窗口来说的。
 
逻辑坐标和物理坐标
QPainter的逻辑坐标 与 QPaintDevice的物理坐标的映射,由QPainter的变换矩阵(transformation matrix)、视口(viewport)和窗口(window)完成。
默认情况下,物理坐标与逻辑坐标系统是重合的,QPainter也支持坐标转换,例如:旋转、缩放等。
详细请看下一篇笔记(03坐标变换)。
 
抗锯齿渲染
使用很简单:
void QPainter::setRenderHint(QPainter::RenderHint hint, bool on = true)
void QPainter::setRenderHints(QPainter::RenderHints hints, bool on = true);
 
不过还是学习一下理论吧:
一个图形的大小(宽度和高度)总与其数学模型相对应,会忽略渲染时画笔的宽度。
图示意了忽略其渲染时使用的画笔的宽度时的样子。
 
抗锯齿(Anti-aliased)又称为反锯齿或者反走样,就是对图像的边缘进行平滑处理,使其看起来更加柔和流畅的一种技术。
QPainter进行绘制时可以使用QPainter::RenderHint渲染提示来指定是否要使用抗锯齿功能,渲染提示的取值如图:
注:文档上还有三个已经不建议使用的枚举常量。
 
在默认的情况下,绘制会产生锯齿,并且使用这样的规则进行绘制。
当使用宽度为一个像素的画笔进行渲染时,像素会在数学定义的点的右边和下边进行渲染,如图10-12所示。
当使用一个拥有偶数像素的画笔进行渲染时,像素会在数学定义的点的周围对称渲染;
而当使用一个拥有奇数像素的画笔进行渲染时,像素会被渲染到数学定义的点的右边和下边,如图10- 13所示。
 
矩形可以用QRect类来表示,但是由于历史的原因,QRect::right()和QRect::bottom()函数的返回值会偏离矩形真实右下角。
使用QRect的right()函数返回left() + width()-1;而bottom()函数返回top() +height()-1。
所以建议使用QRectF来代替QRect。
QRectF类在一个使用了浮点数精度的坐标平面中定义了一个矩形,QRectF::right()和QRectF::bottom()会返回真实的右下角坐标。
当然,也可以使用QRect类,应用x()+width()和y()+height()来确定右下角的坐标,而不要使用right( )和bottom()函数。
 
 

[Qt2D绘图]-02坐标系统&&抗锯齿渲染的更多相关文章

  1. Qt 2D绘图之二:抗锯齿渲染和坐标系统

    一.抗锯齿渲染 1.1 逻辑绘图 图形基元的大小(宽度和高度)始终与其数学模型相对应,下图示意了忽略其渲染时使用的画笔的宽度的样子. 1.2 物理绘图(默认情况) 在默认的情况下,绘制会产生锯齿,并且 ...

  2. CSS3中字体平滑处理和抗锯齿渲染

    在围观Drupal官方主题的时候,发现了一个有意思的非标准CSS选择器-webkit-font-smoothing,于是上手把玩了一番.如何使用css3字体平滑显示呢 要知道,W3C对CSS中字体的抗 ...

  3. CSS3属性-webkit-font-smoothing字体抗锯齿渲染

    对字体进行抗锯齿渲染可以使字体看起来会更清晰舒服.在图标字体成为一种趋势的今天,抗锯齿渲染使用也越来越多. font-smoothing是非标准的CSS定义.它被列入标准规范的草案中,后由于某些原因从 ...

  4. [Qt2D绘图]-03坐标系统之坐标变换

    大纲:     基本变换         介绍和常用API     窗口-视口转换         窗口         视口         让窗口和视口维持相同宽高比来防止变形   基本变换 默认 ...

  5. C# 绘图时使用抗锯齿会多出一个像素

    如下图,使用局部绘图覆盖后的效果. 减去像素后效果

  6. 字体渲染技术(字体抗锯齿技术) -webkit-font-smoothing: antialiased;

    1.-webkit-font-smoothing控制的字体渲染只对MacOS的webkit有效.所以,你在MacOS测试环境下面设置-webkit-font-smoothing时,只要你不把它设置为n ...

  7. Bitmap: 使用Bitmap作为绘图缓冲时设置抗锯齿

    android上绘图时常用的抗锯齿方法是: paint.setAntiAlias(true); 但是在以Bitmap作为绘图缓冲绘制时,绘制出来的Bitmap可能仍然有锯齿,此时可以在绘制开始前加上下 ...

  8. [Qt2D绘图]-04绘制文字&&绘制路径

    注:学习自<Qt Creator 快速入门>第三版.   文档中的示例参考 Qt Example推荐:Painter Paths Example和Vector Deformation   ...

  9. iOS抗锯齿的方式

    iOS开发中,有时候展示图片等内容的时候,会出现锯齿.比如笔者最近使用 iCarousel 控件的Cover flow效果来展示几幅图片时,两侧的图片出现了较为严重的锯齿,着实不好看.这里列出两个方式 ...

随机推荐

  1. Linux MySQL集群搭建之主从复制

    前期准备 准备两台Linux,一主,一从,具体Linux安装MySQL操作步骤:点我直达 集群搭建 注意事项 一主可以多从 一从只能一主 关闭主从机器的防火墙策略 chkconfig iptables ...

  2. Ubuntu U盘启动出现“Failed to load ldlinux.c32”解决

    最后用ultraISO软碟通,刻录映像时写入方式选择”RAW”,成功解决!!!

  3. Springboot基于assembly的服务化打包

    (1)首先我们编辑 assembly.xml 配置文件,在前文的基础上新增第三方依赖设置(高亮部分),实现将第三方的 jar 包添加到压缩包里的 lib 目录: <?xml version=&q ...

  4. Python3-logging模块-日志记录

    Python3中的logging模块提供了较为灵活的事件日志系统 日志级别 DEBUG < INFO < WARING(Python默认) < ERROR < FATAL(CR ...

  5. Selenium+java - Edge浏览器启动

    写在前面 随着win10系统的普及,使得Edge浏览器得到广泛使用.从自动化角度看,自然微软也一直不断提供着支持服务,系统版本更新,对应的Edge浏览器版本也在更新,当然对应的驱动版本也会发生变化. ...

  6. Java基础:变量、常量、作用域

    JAVA基础:变量.常量.作用域 变量:可以变化的量.Java是强类型语言,每个变量都必须声明类型. Java变量是程序中最基本的存储单元,要素包括变量名,类型和作用域. //类变量 static s ...

  7. int与bigdecimal的相互转换

    int转bigdecimal BigDecimal number = new BigDecimal(0); int value=score; number=BigDecimal.valueOf((in ...

  8. hive中内置函数

    查看函数的详细使用方法 desc function extended 函数名 例如: 1).desc function extended locate locate(substr, str[, pos ...

  9. pycharm中导入包失败的解决办法

    将鼠标移动到requests处,出现如下提示 按住alt+enter键,点击install package requests即可安装requests包 安装成功后

  10. Spring Security(二) —— Guides

    摘要: 原创出处 https://www.cnkirito.moe/spring-security-2/ 「老徐」欢迎转载,保留摘要,谢谢! 2 Spring Security Guides 上一篇文 ...