本来这篇文件应该是在后面来发的,但是计划赶不上变化了,最近都在热烈庆祝“百年大党百年辉煌”,我争先恐后地在这里现学现卖。在新配的国产机器上绘制五星红旗,以表达心情,党旗有点难度,先完成国旗。
具体代码如下,其中一些内容参考自网络资料,银河麒麟KylinV10桌面版、Python3.5+PyQT5,CPU是FT2000/4 ARM v8。
from PyQt5.Qt import *from PyQt5.QtGui import QIconfrom PyQt5.QtWidgets import QWidget,QApplicationimport sys, randomimport math #import python math libclass DrawPoints(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setGeometry(300, 300, 800, 600)self.setWindowTitle('旗帜')self.setWindowIcon(QIcon('./icon.png'))self.show()def paintEvent(self, event):painter = QPainter()painter.begin(self)# self.drawPoints(painter)self.drawFlag(painter)painter.end()def drawPoints(self, painter):for i in range(100):pen = QPen(random.choice([Qt.red, Qt.green, Qt.gray, Qt.blue, Qt.darkGreen]), random.randint(2,10))painter.setPen(pen)size= self.size()x= random.randint(1, size.width()-1)y= random.randint(1, size.height()-1)painter.drawPoint(x,y)def drawFlag(self, painter):k = 15width = 24height = 16painter.setBrush(QColor("#F40002"))painter.setPen(QColor("#FFFFFF"))painter.drawRect(0, 0, width*k, height*k)## 首先将坐标原点设为大五角星的中心painter.translate(60, 60)painter.setBrush(QColor("#FAF408"))painter.setPen(QColor("#FAF408"))# 画大五角星points = [QPoint(0, -36), QPoint(-12, 0),QPoint(12, 0)]# painter.setRenderHint(QPainter::Antialiasing)for num in range(1,6):# 画三角形构成五角星painter.rotate(72)#painter.drawConvexPolygon(points)painter.drawConvexPolygon(QPolygon(points))#四颗小星的中心点transLates = [QPoint(60, -36), QPoint(24, 24), QPoint(0, 36), QPoint(-24, 24)];#四颗小星的偏转角度rotateAngle = [-90-math.degrees(math.atan(0.6)), -90-math.degrees(math.atan(1.0/7.0)),-math.degrees(math.atan(3.5)), -math.degrees(math.atan(1.25))];points1 = [QPoint(0, -12), QPoint(-5, 0),QPoint(5, 0)];for i in range(0,4):painter.translate(transLates[i]);#每次画小五角星前将坐标设为要画的五角星的中心painter.rotate(rotateAngle[i]);#并且每次都旋转一个角度以对准大五角星for j in range(0,5):painter.rotate(72);#五角星由五个三角形组成,每次旋转72°,旋转5次得到五角星painter.drawConvexPolygon(QPolygon(points1));#画组成五角星的三角形painter.rotate(-rotateAngle[i]);if __name__ == '__main__':app= QApplication(sys.argv)dp = DrawPoints()sys.exit(app.exec_())
与大家一起共勉!
文章转载自震测,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




