Comment puis-je changer la taille d'un rectangle

0

La question

J'utilise une fonction de Rabbid76. Avec cette fonction, je peux faire tourner un rectangle. Le rectangle obtenir la taille d'une image.Je veux modifier la taille du rectangle est plus petit que l'image . que j'essaie de la changer topleft et haut. Il doesent travail.

import pygame

pygame.init()
screen = pygame.display.set_mode((400, 400))
font = pygame.font.SysFont(None, 50)
clock = pygame.time.Clock()

#orig_image = font.render("rotated rectangle", True, (255, 0, 0))
angle =0
orig_image = pygame.image.load("Bilder/baum2.png")
rotated_image = pygame.transform.rotate(orig_image, angle)

def draw_rect_angle(surf, rect, pivot, angle):   
    rect.topleft = (rect.topleft[0] +25 , rect.topleft[1])
    rect.topright = (rect.topright[0] -25, rect.topright[1])    
    pts = [rect.topleft, rect.topright, rect.bottomright, rect.bottomleft]
    pts = [(pygame.math.Vector2(p) - pivot).rotate(-angle) + pivot for p in pts]
    pygame.draw.lines(surf, (255, 255, 0), True, pts, 3)

run = True
while run:
    clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False    

    screen.fill(0)
    screen_center = screen.get_rect().center
    screen.blit(rotated_image, rotated_image.get_rect(center = screen_center))
    rect = orig_image.get_rect(center = screen_center)
    draw_rect_angle(screen, rect, screen_center, angle)
    pygame.display.flip()

pygame.quit()
exit()
pygame python
2021-11-24 03:11:21
2

La meilleure réponse

1

Tout ce que vous avez à faire est de réduire la taille de l'entrée du rectangle. Utilisation pygame.Rect.inflate avec des valeurs négatives pour réduire la taille du rectangle:

def draw_rect_angle(surf, orig_rect, pivot, angle):

    rect = orig_rect.inflate(-25, -25)

    pts = [rect.topleft, rect.topright, rect.bottomright, rect.bottomleft]
    pts = [(pygame.math.Vector2(p) - pivot).rotate(-angle) + pivot for p in pts]
    pygame.draw.lines(surf, (255, 255, 0), True, pts, 3)
2021-11-24 05:30:17
1

Dans le code ci-dessous:

    rect.topleft = (rect.topleft[0] +25 , rect.topleft[1])
    rect.topright = (rect.topright[0] -25, rect.topright[1])    

L' topleft[0] est le top; topright[0] est aussi, l' top.

Alors top + 25, top - 25 est égal à top + 0 donc, rien de changé.

Peut-être que vous souhaitez modifier bottomright.

Une petite astuce: Debug ligne par ligne et de payer l'attention sur les changements de variables, vous pouvez trouver les incohérences entre l'exécution du programme et de l'effet attendu plus facilement

2021-11-24 03:50:00

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................