🌈据说,看我文章时 关注、点赞、收藏 的 帅哥美女们 心情都会不自觉的好起来。
前言:
🧡作者简介:大家好我是 user_from_future ,意思是 “ 来自未来的用户 ” ,寓意着未来的自己一定很棒~
✨个人主页:点我直达,在这里肯定能找到你想要的~
👍专栏介绍:Python绘图 ,一个专注于分享绘图案例与教学的专栏~
专栏文章直链:
【Python绘图】绘图常见的构成元素3
【Python绘图】绘图常见的构成元素2
【Python绘图】绘图常见的构成元素1
【Python绘图】学习绘图第一步,先要知道哪些操作是常用的
【Python绘图】朋友过生日不知道送什么?免费的蛋糕送给他
Python绘制Flag
Python绘制Flag
本篇文章教你使用turtle动态绘制一个好看的Flag,使用网上祖传的使用网格线定义坐标绘画,对于实现就不做过多解释了,看注释就行:
import math
import turtle
# 窗口属性设置
side = 40 # 网格单位边长为40(可变参数)
width = 30 # 网格的宽为30个单位长度(非可变参数)
height = 20 # 网格的高为20个单位长度(非可变参数)
turtle.speed(10) # 调整绘图速度 [0-10] 整数
turtle.hideturtle() # 隐藏海龟图标
turtle.title('五星红旗迎风飘扬~') # 海龟画图的标题
turtle.setup(width * side, height * side)
# 五角星处网格线绘制
turtle.pencolor('#F00')
# 五角星处网格线绘制(横线)
for row in range(height // 2 + 1):
turtle.up()
turtle.goto(-1 * width * side // 2, height * side // 2 - row * side)
turtle.pendown()
turtle.forward(width * side // 2)
# 五角星处网格线绘制(竖线)
turtle.right(90)
for col in range(width // 2 + 1):
turtle.penup()
turtle.goto(col * side - width * side // 2, height * side // 2)
turtle.pendown()
turtle.forward(height * side // 2)
# 绘制五颗黄色的五角星
turtle.speed(5)
turtle.left(180)
turtle.color('#FF0', '#FF0') # turtle.color(pencolor, fillcolor)
# 五角星外接圆圆心、半径、旋转角数据
stars = {
(-10, 5): (3, 0),
(-5, 8): (1, -math.degrees(math.atan(3 / 5)) - 18),
(-3, 6): (1, -math.degrees(math.atan(1 / 7)) - 18),
(-3, 3): (1, math.degrees(math.atan(2 / 7)) - 18),
(-5, 1): (1, math.degrees(math.atan(4 / 5)) - 18),
}
def draw_star(location, radius, rotate):
"""
按外接圆圆心和半径绘制圆内正五角星。
:param location: 圆心位置
:param radius: 半径长度
:param rotate: 中心顺时针旋转
"""
length = 2 * radius * side * math.cos(math.pi / 10) # 计算任意两顶点间的距离
turtle.penup()
turtle.right(rotate) # 初始中心旋转(保证有一角尖指向大星中心点)
turtle.goto(location[0] * side, location[1] * side)
turtle.forward(radius * side) # 此处到达最上方顶点
turtle.right(180 - 18) # 倾斜方便绘制第一条直线
turtle.pendown()
turtle.begin_fill()
for angle in range(5):
turtle.forward(length)
turtle.right(180 - 36)
turtle.end_fill()
turtle.left(18 + rotate) # 恢复到垂直向上的方向
for star in stars:
draw_star(star, *stars[star])
# 填充背景颜色红色
turtle.bgcolor('#F00')
turtle.done()
绘制结果(真正结果没有白色网格):