PySide:可以画出一条平滑的线QPainter吗?

问题描述 投票:0回答:1

当我使用QPainter绘制一条线时,即使我应用了抗锯齿,它也会在像素之间锯齿状移动。是否可以像在photoshop中一样绘制一条线,使其在像素之间均匀移动(即,如果线条位置不是精确的像素值,则会产生灰色像素)。

这是显示锯齿线的示例:

from PySide import QtGui

_pix = QtGui.QPixmap(640, 640)
_pix.fill('White')
_pen = QtGui.QPen("Black")

_pnt = QtGui.QPainter()
_pnt.begin(_pix)
_pnt.setPen(_pen)
_pnt.setRenderHint(_pnt.HighQualityAntialiasing, 1)
_pnt.drawLine(640.0/2-50, 10, 640.0/2+50, 640.0-10)
_pnt.end()

_pix.save('C:/temp/test.jpg', 'JPG')

我想我可以以4倍的尺寸绘制图像,然后将其缩小,但是我想知道是否有一种方法可以避免绘制所有那些可能很昂贵的额外像素。

python python-2.7 pyside qpainter qpixmap
1个回答
1
投票

仅使用AntiAliasing提示会为Qt 4产生平滑线:

from PySide import QtGui

qapp = QtGui.QApplication([])

_pix = QtGui.QPixmap(640, 640)
_pix.fill('White')
_pen = QtGui.QPen("Black")

_pnt = QtGui.QPainter()
_pnt.begin(_pix)
_pnt.setPen(_pen)
_pnt.setRenderHint(_pnt.Antialiasing, True)
_pnt.drawLine(640.0/2-50, 10, 640.0/2+50, 640.0-10)
_pnt.end()
_pix.save('test.jpg', 'JPG')

Draw-Line-Demo

© www.soinside.com 2019 - 2024. All rights reserved.