【Python绘图】绘制Flag

🌈据说,看我文章时 关注、点赞、收藏帅哥美女们 心情都会不自觉的好起来。

前言:
🧡作者简介:大家好我是 user_from_future ,意思是 “ 来自未来的用户 ” ,寓意着未来的自己一定很棒~
✨个人主页:点我直达,在这里肯定能找到你想要的~
👍专栏介绍:Python绘图 ,一个专注于分享绘图案例与教学的专栏~

专栏文章直链:
【Python绘图】绘图常见的构成元素3
【Python绘图】绘图常见的构成元素2
【Python绘图】绘图常见的构成元素1
【Python绘图】学习绘图第一步,先要知道哪些操作是常用的
【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()

绘制结果(真正结果没有白色网格):

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值