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帧
相关文章
|
7月前
|
Python
Pygame基础9-射击
Pygame基础9-射击
|
8月前
|
前端开发 JavaScript 搜索推荐
webgl canvas系列——animation中基本旋转、平移、缩放(模拟冒泡排序过程)
webgl canvas系列——animation中基本旋转、平移、缩放(模拟冒泡排序过程)
168 1
webgl canvas系列——animation中基本旋转、平移、缩放(模拟冒泡排序过程)
|
7月前
|
Python
Pygame基础3-动画
Pygame基础3-动画
|
8月前
|
Python
pygame 烟花效果
pygame 烟花效果
103 0
|
8月前
|
前端开发 计算机视觉 Python
OpenCV中绘制运动的小球动画,
要在OpenCV中绘制运动的小球动画,并且将动画显示在Python GUI窗口内,可以按照以下步骤进行:
118 2
|
计算机视觉 Python
OpenCV中绘制文字和运动的小球动画
要在OpenCV中绘制文字和运动的小球动画,可以使用以下方法: 1. 导入所需库:
148 8
|
异构计算
[笔记]音视频学习之SDL篇《十》绘制矩形,线条
[笔记]音视频学习之SDL篇《十》绘制矩形,线条
150 0
C# GDI+绘图(二)进阶---Pen/Brush以及坐标轴平移和旋转等
上一篇C# GDI+绘图(一)GDI+介绍及基础,我们介绍了,GDI+的基础,这篇我们对其进阶内容进行学习,分别为Pen/Brush以及坐标轴操作
90.pygame游戏-玩个球(play the ball)最终版
90.pygame游戏-玩个球(play the ball)最终版
153 0
90.pygame游戏-玩个球(play the ball)最终版
|
前端开发 开发者
Canvas中的拖拽、缩放、旋转 (下)——代码实现
Canvas中的拖拽、缩放、旋转 (下)——代码实现
596 0