Pythonで立体的な円を表示する

I wrote: 2016/10/29

Pythonで立体的に見える円を表示させます。そんで、PyQtを使います。

立体的に見えるようにするためには、円に対してグラデーションを加える必要があります。なので、QRadialGradientを利用して、グラデーションをつけます。光が当たっている部分は白く、そこから離れるにつれて本来の色に近づくように描画します。

これによって円が立体的に見えるようになります。(*´艸`*)
てか、画像処理ならOpenGL使えばいいじゃん。まあ、それは置いておこう...

以下はソースです。
import sys
from PyQt4 import QtGui, QtCore, uic
from Foo import Ui_MainWindow

class Sample(QtGui.QMainWindow): 
    def __init__(self, parent = None):
        super(Sample, self).__init__(parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

    def paintEvent(self,event):
        painter = QtGui.QPainter()
        painter.begin(self)
        painter.setRenderHint(QtGui.QPainter.Antialiasing, True)
        painter.setBrush(QtCore.Qt.white)
        painter.drawRect(event.rect())

        painter.setPen(QtCore.Qt.white)
        center = QtCore.QPointF(175, 175)
        fpoint = QtCore.QPointF(155,155)
        gradient = QtGui.QRadialGradient(center,100,fpoint)
        gradient.setColorAt(0.0, QtCore.Qt.white)
        gradient.setColorAt(1.0, QtCore.Qt.blue)
        painter.setBrush(gradient)
        painter.drawEllipse(center, 100, 100)
        painter.end()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    sample = Sample()
    sample.show()
    sys.exit(app.exec_())
 
実行されたアプリケーション
blues