首页 > 代码库 > qt反走样(简选)

qt反走样(简选)

# -*- coding: utf-8 -*-

# python:2.x

__author__ = ‘Administrator‘

#qt反走样(简选)

#概念

"""

在光栅图形显示器上绘制非水平、非垂直的直线或多边形边界时,或多或少会呈现锯齿

状外观。这是因为直线和多边形的边界是连续的,而光栅则是由离散的点组成。在光栅显示

设备上表现直线、多边形等,必须在离散位置采样。由于采样不充分重建后造成的信息失真,

就叫走样;用于减少或消除这种效果的技术,就称为反走样

"""

#说明:反走样是图形学中的重要概念,用以防止“锯齿”现象的出现。很多系统的绘图API里面都会内置了反走样的算法,不过默认一般都是关闭的

from PyQt4.QtGui import  *

from PyQt4.Qt import *

from PyQt4 import QtGui, QtCore

from PyQt4.QtCore import *

import sys

class Painterd(QWidget):

    def __init__(self):

        super(Painterd,self).__init__()

        self.resize(800,600)

        self.setWindowTitle(‘paint‘)

        #画笔

    def paintEvent(self, e):

        paint=QPainter(self)

        paint.setPen(QPen(Qt.black,5,Qt.DashDotDotLine,Qt.RoundCap))#创建了一个黑色 5像素宽的画笔,使用了点线的样式,圆形笔帽

        paint.setBrush(Qt.yellow)

        paint.drawEllipse(50,150,200,150)

        paint.setRenderHint(paint.Antialiasing,True)#Antialiasing 属性(也就是反走样)设置为True,就打开了 QPainter 的反走样功能。还记得我们曾经说过

        paint.setPen(QPen(Qt.black,5,Qt.DashDotDotLine,Qt.RoundCap))

        paint.setBrush(Qt.yellow)

        paint.drawEllipse(300,150,200,150)

def main():

    app = QtGui.QApplication(sys.argv)

    ex =Painterd()

    ex.show()

    sys.exit(app.exec_())

if __name__ == ‘__main__‘:

    main()

 

#更多学习内容:http://devbean.blog.51cto.com/448512/237447/

如图: