Pygame基础6-旋转

简介: Pygame基础6-旋转

6-旋转

当我们想要旋转一个图片的时候,

我们可以使用pygame.transform.rotozoom获得旋转后的图片:

kitten = pygame.transform.rotozoom(kitten, angle, 1)

问题是,每次旋转都会降低图片的质量。如果旋转很多次后,图片的质量会变得很差,甚至会让程序崩溃

为了解决这个问题,我们每次旋转的时候,都使用原始图片的副本,而不是使用上一次旋转后的图片。

def rotate(surface, angle):
    return surface, pygame.transform.rotozoom(surface, angle,1)

while True:
    ...

    angle += 1
    kitten, kitten_rotated = rotate(kitten, angle)
    kitten_rotated_rect = kitten_rotated.get_rect(center=(100,100))

    screen.blit(kitten_rotated, kitten_rotated_rect)
    ...

另一个可能遇到的问题:

显示图片时,会默认有透明度。但如果显示rgb表面时,会看到黑色背景

kitten = pygame.Surface((200,200))
kitten.fill((255,0,0))

...

解决办法是设置透明度

kitten = pygame.Surface((200,200), pygame.SRCALPHA)
kitten.fill((255,0,0))

案例

旋转图片。

import sys
import pygame

pygame.init()
clock = pygame.time.Clock()

width, height = 800, 600
#  Display surface
screen = pygame.display.set_mode((width, height))



kitten =  pygame.image.load("kitten.jpg") 
#pygame.Surface((200,200), pygame.SRCALPHA) #kitten.fill((255,0,0))

kitten = pygame.transform.scale(kitten, (200, 200))

kitten_rect = kitten.get_rect(center=(100,100))
angle = 0

def rotate(surface, angle):
    return surface, pygame.transform.rotozoom(surface, angle,1)

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    screen.fill((255, 255,255))  # 将screen填充为白色
    angle += 1
    kitten, kitten_rotated = rotate(kitten, angle)
    kitten_rotated_rect = kitten_rotated.get_rect(center=(100,100))

    screen.blit(kitten_rotated, kitten_rotated_rect)
    

    pygame.display.flip() # 更新屏幕画面
    clock.tick(30)  # 控制游戏速率,每秒x帧
相关文章
|
12天前
|
Python
Pygame基础11-mask 蒙版
Pygame基础11-mask 蒙版
29 14
|
12天前
|
Python
Pygame基础9-射击
Pygame基础9-射击
Pygame基础9-射击
|
12天前
|
Python
Pygame基础3-动画
Pygame基础3-动画
|
1月前
|
Python
绘制你的图像-turtle
`turtle`是Python中的一个图形绘制库,源自1967年的Logo编程语言。它使用tkinter创建图形界面,让用户仿佛操控一支在画布上画画的笔。基本操作包括设置画笔颜色、填充、移动及旋转。示例代码展示了如何创建图形,如红黄相间的形状和太极图。turtle还可用于制作动画,如小球下落效果。此外,文中还给出了绘制玫瑰曲线、螺旋和扇子的代码示例。turtle是引导初学者学习编程的好工具。5月更文挑战第18天
30 0
|
1月前
|
Python
pygame 烟花效果
pygame 烟花效果
31 0
|
8月前
|
计算机视觉
OpenCV-绘制旋转矩形
OpenCV-绘制旋转矩形
107 0
|
9月前
|
C#
C# GDI+绘图(二)进阶---Pen/Brush以及坐标轴平移和旋转等
上一篇C# GDI+绘图(一)GDI+介绍及基础,我们介绍了,GDI+的基础,这篇我们对其进阶内容进行学习,分别为Pen/Brush以及坐标轴操作
|
10月前
旋转的沙漏-[ Qt绘制旋转图像]
旋转的沙漏-[ Qt绘制旋转图像]
117 0
【Three.js入门】图形用户界面GUI、BufferGeometry创建矩形、随机生成多个随机颜色的三角形
【Three.js入门】图形用户界面GUI、BufferGeometry创建矩形、随机生成多个随机颜色的三角形
193 0
|
前端开发 JavaScript
canvas中的拖拽、缩放、旋转 (上) —— 数学知识准备
canvas中的拖拽、缩放、旋转 (上) —— 数学知识准备
741 0
canvas中的拖拽、缩放、旋转 (上) —— 数学知识准备