本节的内容可以在帮助中通过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()函数。
欢迎交流学习,共同进步
限本人水平有限,如有错误请指教,谢谢