(逻辑绘图)图像在坐标图中的显示:
笔的默认宽度为1,当笔的宽度大于1时,相当于在则条线的两边均匀加厚,确定坐标的还是这条宽度为1的线段,相当于宽度的中心位置。
物理绘图 (默认情况)
默认情况下,绘制会产生锯齿,使用以下规则绘制:
- 当宽度为一像素时,像素会在数学定义的点的右边和下边进行渲染
- 当偶数像素的画笔进行渲染时,像素会对称渲染
- 当奇数像素的笔画时,像素会在右边和下边渲染
这样的图像会产生锯齿
当矩形用QRect类表示时的坐标问题:
使用QRect::button()和QRect::right(),返不准确的坐标,建议不使用right()和button()
- right() 返回的是 :left() +width() - 1
- button()返回的是:top()+height()-1
- 建议使用: x()+width() 表示 right()
- 建议使用:y()+height() 表示 button()
建议使用QRectF 使用浮点数,QRect::button()和QRect::right()返回的是准确的位置。
抗锯齿绘图:
抗锯齿又称为反锯齿或者反走样,对图像的边缘进行平滑处理,使其看起来更加柔和和流畅的技术。
设置抗锯齿函数:
QPainter::setRenderHint(RenderHint hint,bool on=true)
RenderHint hint的种类:
QPainter::Antialiasing | 指示引擎应尽可能消除基元的边缘锯齿 |
QPainter::TextAntialiasing | 指示引擎应尽可能消除文本锯齿。 |
QPainter::SmoothPixmapTransfrom | 指示引擎应使用平滑的像素图转换算法(如双线性)而不是最近邻 |
如果在绘制时使用了抗锯齿渲染提示, 如果设置了QPainter::Antialiasing
像素会在数学定义的点的两侧对称地进行渲染。