前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pygame基础6-旋转

Pygame基础6-旋转

作者头像
一只大鸽子
发布2024-04-11 13:04:00
790
发布2024-04-11 13:04:00
举报

6-旋转

当我们想要旋转一个图片的时候, 我们可以使用pygame.transform.rotozoom获得旋转后的图片:

代码语言:javascript
复制
kitten = pygame.transform.rotozoom(kitten, angle, 1)

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

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

代码语言:javascript
复制
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表面时,会看到黑色背景

纯色图片旋转时出现黑色背景

代码语言:javascript
复制
kitten = pygame.Surface((200,200))
kitten.fill((255,0,0))

...

解决办法是设置透明度

代码语言:javascript
复制
kitten = pygame.Surface((200,200), pygame.SRCALPHA)
kitten.fill((255,0,0))

案例

旋转图片。

代码语言:javascript
复制
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帧
本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-29,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 一只大鸽子 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 6-旋转
  • 案例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com