• Turtle绘制带颜色和字体的图形(Python3)


    转载自https://blog.csdn.net/wumenglu1018/article/details/78184930

    在Python中有很多编写图形程序的方法,一个简单的启动图形化程序设计的方法是使用Python内嵌的Turtle模块。Turtle是Python内嵌的绘制线、圆以及其他形状(包括文本)的图形模块。它很容易学习并且使用简单。

    一个Turtle实际上是一个对象,在导入Turtle模块时,就创建了对象,然后,可以调用Turtle对象的各种方法完成不同的操作。

    当创建一个Turtle对象时,它的位置被设定在(0,0)处——窗口的中心,而且它的方向被设置为向右。Turtle模块用笔来绘制图形。默认情况下,笔是向下的(就像真实的笔尖触碰着一张纸)。如果笔是向下的,那么当移动Turtle的时候,它就会绘制出一条从当前位置到新位置的线。

    下面两个表是控制笔的绘制状态的方法和移动Turtle的方法:

    circle方法有三个参数:radius是必需的,extent和step是可有可无的。extent是一个角度,它决定绘制圆的哪一部分。step决定使用的阶数。如果step是3/4/5/6……,那么circle方法将绘制一个里面包含被圆括住的的三边、四边、五边、六边或更多边形(即正三角形、正方形、五边形、六边形等)。如果不指定阶数,那么circle方法就只画一个圆。

    下面表是Turtle笔的颜色、填充和绘制方法:

     

    代码和执行实例:

    (如果我理解有错误,希望大佬们一定要指出来委屈,不要误导了其他人才好)

    附上面显示的彩色图形的完整代码:

    import turtle
    
    turtle.pensize(3)
    turtle.penup()
    turtle.goto(-100, -50)
    turtle.pendown()
    turtle.begin_fill()
    turtle.color("red")
    turtle.circle(40, steps=3)
    turtle.end_fill()
    
    turtle.penup()
    turtle.goto(0, -50)
    turtle.pendown()
    turtle.begin_fill()
    turtle.color("yellow")
    turtle.circle(50)
    turtle.end_fill()
    
    turtle.penup()
    turtle.goto(100, -50)
    turtle.pendown()
    turtle.begin_fill()
    turtle.fillcolor("green")
    turtle.circle(40, steps=6)
    turtle.end_fill()
    
    turtle.penup()
    turtle.goto(-50, 100)
    turtle.pendown()
    turtle.color("blue")
    turtle.write("Colorful Shapes",  font = ("Times", 18,"bold"))
    turtle.end_fill()
    
    turtle.hideturtle()
    
    turtle.done()

    补充:

    • import turtle:导入Turtle模块中定义的所有函数,这样就可以使用所有函数。
    • penup()和pendown():设置抬起或放下笔以控制移动笔时是否绘制。刚学习时可能对这两个函数有点晕,我就这样理解:penup,抬起笔,就是我抬起笔来做动作,这时候笔没有挨着纸,所以之后移动时并不会画图形;pendown,落下笔,就是我现在将笔挨着纸了,一旦移动一步就会有个画出来的形状。
    • forward():向箭头指的方向画形状
    • write():写一个文本字符串
    • Turtle的done()命令可以导致程序暂停直到用户关闭Python Turtle图形化窗口,它的目的是给用户时间来查看图形。没有这一行,图形窗口会在程序完成时立即关闭。

    2017/10/9      20:45更新

    先上代码:

    <span style="font-size:18px;"># -*- coding: utf-8 -*-
    """
    绘制带颜色和文字的图形
    """
    
    import turtle
    
    turtle.penup()
    turtle.goto(-200, -50)
    turtle.pendown()
    turtle.begin_fill()    #开始填充
    turtle.color("black")  #填充黑色
    turtle.circle(40)
    turtle.end_fill()      #填充结束
    
    turtle.color("red")    #画笔颜色为红色
    turtle.penup()
    turtle.goto(-100, -50)
    turtle.pendown()
    turtle.circle(40, steps=3)
    
    turtle.color("purple")    #画笔颜色为紫色
    turtle.penup()
    turtle.goto(0, -50)
    turtle.pendown()
    turtle.begin_fill()       #开始填充
    turtle.fillcolor("gray")  #填充灰色
    turtle.circle(40, steps=4)
    turtle.end_fill()         #填充结束
    
    
    turtle.penup()
    turtle.goto(100, -50)
    turtle.pendown()
    turtle.begin_fill()        #开始填充
    turtle.fillcolor("yellow") #fillcolor为黄色
    turtle.color("purple")     #color为紫色
    turtle.circle(40, steps=5)
    turtle.end_fill()          #填充结束
    
    turtle.penup()
    turtle.goto(200, -50)
    turtle.pendown()
    turtle.begin_fill()        #开始填充
    turtle.color("yellow")     #color为黄色
    turtle.fillcolor("green")  #fillcolor为绿色
    turtle.circle(40, steps=6)
    turtle.end_fill()          #填充结束
    
    turtle.color("blue")
    turtle.penup()
    turtle.goto(-50, 100)
    turtle.pendown()
    turtle.write("Colorful Shapes", font = ("Times", 18, "bold"))
    
    #隐藏箭头
    turtle.hideturtle()
    #暂停界面,使得用户能够看见展示的图形
    turtle.done()</span>

    执行结果:

    • turtle.begin_fill():在填充图形前访问这个方法
    • turtle.end_fill():在最后调用begin_fill之前填充绘制的图形
    • turtle.color(c):设置笔的颜色
    • turtle.fillcolor(c):设置笔填充颜色

    所以:

    在begin_fill()和end_fill()之间设置的turtle.color(c)和turtle.fillcolor(c)都可以作为填充色,例如黑色的圆。

    将turtle.color(c)提到前面,不写begin_fill()和end_fill(),则就不会实现填充,例如红边的三角形。

    将turtle.color(c)提到前面,并在begin_fill()和end_fill()之间设置turtle.fillcolor(c),那么图形的边框和内部填充颜色分别对应于color和fillcolor,例如紫边框灰色四边形。

    在begin_fill()和end_fill()之间设置不同的turtle.color(c)和turtle.fillcolor(c),则以排序在后面的为准去填充图形,例如紫色五边形和黄边框绿色六边形。五边形的代码是先fillcolor黄色,然后color紫色覆盖,所以最终填充为紫色。六边形是先color黄色,这样就应该默认用黄色去填充,结果后面接着fillcolor绿色,所以最终填充为绿色。

     

    所以,我上面的猜想不是很正确,刚处于学习阶段,有些思考还不到位~~~~~~

  • 相关阅读:
    hdu 1017 A Mathematical Curiosity 解题报告
    hdu 2069 Coin Change 解题报告
    hut 1574 组合问题 解题报告
    hdu 2111 Saving HDU 解题报
    hut 1054 Jesse's Code 解题报告
    hdu1131 Count the Trees解题报告
    hdu 2159 FATE 解题报告
    hdu 1879 继续畅通工程 解题报告
    oracle的系统和对象权限
    oracle 自定义函数 返回一个表类型
  • 原文地址:https://www.cnblogs.com/yunlong-study/p/9034661.html
Copyright © 2020-2023  润新知