暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

国产机器(飞腾FT2000)上绘制五星红旗PyQT5+KylinV10

震测 2021-07-04
596

本来这篇文件应该是在后面来发的,但是计划赶不上变化了,最近都在热烈庆祝“百年大党百年辉煌”,我争先恐后地在这里现学现卖。在新配的国产机器上绘制五星红旗,以表达心情,党旗有点难度,先完成国旗。


具体代码如下,其中一些内容参考自网络资料,银河麒麟KylinV10桌面版、Python3.5+PyQT5,CPU是FT2000/4 ARM v8。

from PyQt5.Qt import *
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QWidget,QApplication
import sys, random
import math #import python math lib


class 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 = 15
width = 24
height = 16


painter.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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论