本节的内容可以在帮助中通过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()函数。
 
 

最新文章

  1. 使用抓包工具SpyNet对你的网络进行监控
  2. C# WinForm捕获全局异常
  3. [知识点]Trie树和AC自动机
  4. 导出Excel 有身份证时注意
  5. U3D中IOS平台泛型方法尽少使用
  6. Zend Framework 2参考Zend\Authentication(HTTP认证适配器)
  7. mapkit定位以及俯视视图
  8. javaWeb学习总结(3)- 通过Servlet生成验证码图片(2)
  9. Centos 6.5 安装 python3.6.2、pip9.0.1、ipython6.1
  10. 利用 Scrapy 爬取知乎用户信息
  11. MySQL--各版本DDL 操作总结
  12. .net 笔试题目
  13. D3、openlayers的一次尝试
  14. JAVA进阶9
  15. 20165330 2017-2018-2 《Java程序设计》第7周学习总结
  16. {前端CSS} 语法 Css的几种引入方式 css选择器 选择器的优先级 CSS属性相关 背景属性 边框 CSS盒子模型 清除浮动 overflow溢出属性  定位(position)z-index
  17. IntelliJ IDEA 快捷键积累
  18. 22个值得收藏的Android开源代码——cool
  19. HDU 4764 Stone (2013长春网络赛,水博弈)
  20. 【项目管理】git和码云的使用

热门文章

  1. Zookeeper——Watcher原理详解
  2. tensorflow-TFRecord 文件详解
  3. 连接 mongodb 数据库 :
  4. v-on事件修饰符
  5. git常用代码合集
  6. Java CRC16 MODBUS校验算法实现
  7. 一位老程序员说,有这份python3的开发指南,月薪能突破20K
  8. 线程基础9-quene讲解
  9. 使用反应式关系数据库连接规范R2DBC操作MySQL数据库
  10. 前端基础:HTTP 协议详解