[英]Pygame .rotate is making a surface grow rather than rotate
I'm trying to make a program generate graphs and I'm trying to make the square rotate just for something later on, but the squares are growing rather than rotating even though I'm using pygame.transform.rotate().我正在尝试让程序生成图形,并且我正在尝试让正方形旋转只是为了稍后的事情,但是正方形正在增长而不是旋转,即使我正在使用 pygame.transform.rotate()。
import pygame, json
from pygame.locals import *
with open("data.json") as f:
data = json.load(f)
running = True
pygame.init()
clock = pygame.time.Clock()
angle = 0
screen = pygame.display.set_mode(size=(800,600))
while running:
screen.fill((0,0,0))
clock.tick(30)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
for i in range(0,len(data["x"])):
surf = pygame.Surface((50,50))
surf.fill((255,0,0))
surfrect = surf.get_rect()
surfrect.x = (data["x"][i])
surfrect.y = (data["y"][i])
surf = pygame.transform.rotate(surf,angle)
screen.blit(surf,(surfrect))
pygame.display.flip()
angle += 1
print(angle)
if angle == 90:
angle = 0
pygame.quit()
And the data for anyone who wants to try it:以及任何想尝试的人的数据:
{"x":[100,200,300], "y":[100,200,300]}
You have to create a Surface with a per pixel alpha format (see How can I make an Image with a transparent Backround in Pygame? ):您必须创建一个具有每像素 alpha 格式的表面(请参阅如何在 Pygame 中制作具有透明背景的图像? ):
surf = pygame.Surface((50,50))
surf = pygame.Surface((50,50), pygame.SRCALPHA)
See also How do I rotate an image around its center using PyGame?另请参阅如何使用 PyGame 围绕其中心旋转图像?
import pygame, json
from pygame.locals import *
with open("data.json") as f:
data = json.load(f)
running = True
pygame.init()
clock = pygame.time.Clock()
angle = 0
screen = pygame.display.set_mode(size=(800,600))
original_surf = pygame.Surface((50,50), pygame.SRCALPHA)
original_surf.fill((255,0,0))
while running:
screen.fill((0,0,0))
clock.tick(30)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
for i in range(0,len(data["x"])):
surf = pygame.transform.rotate(original_surf, angle)
surfrect = surf.get_rect()
surfrect.centerx = (data["x"][i])
surfrect.centery = (data["y"][i])
screen.blit(surf,(surfrect))
pygame.display.flip()
angle += 1
print(angle)
if angle == 90:
angle = 0
pygame.quit()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.