2012-09-22 224 views
2

所以我有一個箭頭作爲圖像。從外觀看,它似乎圍繞着中心旋轉。但是,當它旋轉時,無論哪種方式,當他的角度大約爲75度時,每邊都有一個錯誤: ValueError:地下矩形外表面區域在pygame中旋轉圖像

我不確定問題出在哪裏,旋轉pygames網站的功能。 如果有人知道問題是什麼,我會非常感謝你的幫助。 下面的代碼:

screen = pygame.display.set_mode(ss) 
arrow = pygame.image.load("obj.png").convert_alpha() 

x = 400 
y= 300 
a = 0 
turn = 2 

def rot_center(image, angle): 
    """rotate an image while keeping its center and size""" 
    orig_rect = image.get_rect() 
    rot_image = pygame.transform.rotate(image, angle) 
    rot_rect = orig_rect.copy() 
    rot_rect.center = rot_image.get_rect().center 
    rot_image = rot_image.subsurface(rot_rect).copy() 
    return rot_image 

while True: 
    screen.fill((255, 255, 255)) 
    if turn == 1: 
     a += 10 
    if turn == 2: 
     a -=10 
    if a == 90: 
     turn = 2 
    if a == -90: 
     turn = 1 

    rotarrow = rot_center(arrow, a) 
    screen.blit(rotarrow, (x, y)) 
    pygame.display.update() 
    sleep(0.1) 

回答

4

該頁面中的第一功能,僅適用於正方形圖像。

對於任意的尺寸,可使用第二個:

def rot_center(image, rect, angle): 
     """rotate an image while keeping its center""" 
     rot_image = pygame.transform.rotate(image, angle) 
     rot_rect = rot_image.get_rect(center=rect.center) 
     return rot_image,rot_rect