QT QPainter防锯齿,能防止rotate旋转产生的锯齿。

QPainter的防锯齿,针对不同情况防锯齿,下面做了一个实验:
1、图形防锯齿。
未设置之前
QT QPainter防锯齿,能防止rotate旋转产生的锯齿。_第1张图片
打开反走样设置能够消除圆的锯齿

   p.setRenderHints(QPainter::Antialiasing);

QT QPainter防锯齿,能防止rotate旋转产生的锯齿。_第2张图片
2、图片存在锯齿
未设置之前
QT QPainter防锯齿,能防止rotate旋转产生的锯齿。_第3张图片
在打开反走样同时,对图片进行裁剪,并裁剪时打开防锯齿,能够消除锯齿。

    p.setRenderHints(QPainter::Antialiasing);     
    p.drawPixmap(QRect(-41,-7,83,34),pix.scaled(83,34,Qt::IgnoreAspectRatio,Qt::SmoothTransformation));

QT QPainter防锯齿,能防止rotate旋转产生的锯齿。_第4张图片
3、对图片进行rotate旋转时存在锯齿。
未设置之前,此时有设置
p.setRenderHints(QPainter::Antialiasing);
p.drawPixmap(QRect(-41,-7,83,34),pix.scaled(83,34,Qt::IgnoreAspectRatio,Qt::SmoothTransformation));
但是rotate后依然存在锯齿。
QT QPainter防锯齿,能防止rotate旋转产生的锯齿。_第5张图片
打开反走样的同时打开QPainter::SmoothPixmapTransform,并且图片裁剪设置防锯齿,能够消除锯齿。

    p.setRenderHints(QPainter::Antialiasing|QPainter::SmoothPixmapTransform);
    p.drawPixmap(QRect(-41,-7,83,34),pix.scaled(83,34,Qt::IgnoreAspectRatio,Qt::SmoothTransformation));

QT QPainter防锯齿,能防止rotate旋转产生的锯齿。_第6张图片

你可能感兴趣的:(QT,qt,开发语言)