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帧
相关文章
|
5月前
|
Python
Pygame基础9-射击
Pygame基础9-射击
Pygame基础9-射击
|
6月前
|
前端开发 JavaScript 搜索推荐
webgl canvas系列——animation中基本旋转、平移、缩放(模拟冒泡排序过程)
webgl canvas系列——animation中基本旋转、平移、缩放(模拟冒泡排序过程)
151 1
webgl canvas系列——animation中基本旋转、平移、缩放(模拟冒泡排序过程)
|
5月前
|
Python
Pygame基础3-动画
Pygame基础3-动画
|
5月前
|
Python
Pygame基础2-精灵类 Sprite
Pygame基础2-精灵类 Sprite
|
5月前
|
Python
Pygame基础8-碰撞
Pygame基础8-碰撞
|
5月前
|
数据可视化 Python
Pygame基础10-物理模拟
Pygame基础10-物理模拟
|
6月前
|
Python
pygame 烟花效果
pygame 烟花效果
76 0
|
计算机视觉
OpenCV-绘制旋转矩形
OpenCV-绘制旋转矩形
175 0
C# GDI+绘图(二)进阶---Pen/Brush以及坐标轴平移和旋转等
上一篇C# GDI+绘图(一)GDI+介绍及基础,我们介绍了,GDI+的基础,这篇我们对其进阶内容进行学习,分别为Pen/Brush以及坐标轴操作
|
C语言
旋转的沙漏-[ Qt绘制旋转图像]
旋转的沙漏-[ Qt绘制旋转图像]
147 0