可旋转与缩放的Sprite类_继承自Turtle

可旋转与缩放的Sprite类_继承自Turtle

python turtle rotate image演示BUG旋转

python turtle rotate image演示BUG旋转

python turtle rotate image演示BUG旋转


如果turtle的图像为gif图,那么海龟在旋转时,图像本身是不旋转的.这个类继承自Turtle,实现让海龟的图像旋转,并能能缩放。当然由于采用pillow模块实现,所以能支持更多的图像格式。

"""
   可旋转与缩放的Sprite类_继承自Turtle
"""

import os
from PIL import ImageTk, Image
from turtle import Turtle,Shape,Screen

class Sprite(Turtle):
    """
       继承自Turtle的角色类。
       
    """
    def __init__(self,image=None,scale=(1,1)):
        Turtle.__init__(self,visible=False,shape='turtle')

        if image!=None:
            # 原始图形,最好面向右
            self.imagebasename = os.path.basename(image)
            self.im = Image.open(image)
            self.im = self.im.convert('RGBA')
            self.imsize = self.im.size     # 图像原始大小
            self.imwidth = self.im.width   # 图像原始宽度
            self.imheight = self.im.height # 图像原始高度
            #self.rawshape = Shape('image',ImageTk.PhotoImage(self.im))            
            self.shapesize(*scale)
        self.st()
    
    def _rotate(self,angle):
        """seth,right,left最终都要调用它,所以重写它就行了"""

    def shapesize(self,stretch_wid=None, stretch_len=None, outline=None):
        """重定义shapesize方法"""



if __name__ == "__main__":

    cs =['red','pink','dodger blue','cyan']
    screen = Screen()        
    screen.delay(20)
    screen.bgcolor("orange")
    screen.colormode(255)
    screen.setup(480,360)
    screen.title("可旋转与缩放的Sprite类_继承自Turtle")

    s = 2 
    c = (255,0,0)
    t = Sprite('bugx.png',scale=(s,s))
    t.color('white')
    t.pensize(4)
    
    for i in range(4):
        t.color(cs[i])
        t.begin_fill()
        for _ in range(4):
            t.fd(100)
            for a in range(9):
                t.rt(10)
        t.end_fill()
        t.shapesize(s,s)
        s = s + 0.1
        t.right(90)

    screen.mainloop()
            

如需要查看完整代码,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

李兴球

李兴球的博客是Python创意编程原创博客

评论已关闭。