【问题标题】:PySide: is it possible to draw a smoothed line QPainter?PySide:是否可以绘制平滑线 QPainter?
【发布时间】:2019-11-08 18:48:45
【问题描述】:

当我使用 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】:

    仅使用 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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-13
      • 1970-01-01
      • 2012-06-09
      • 2011-07-14
      相关资源
      最近更新 更多