मैं कैसे बदल सकते हैं आकार की एक आयत

0

सवाल

मैं उपयोग के एक समारोह के Rabbid76. इस समारोह के साथ मैं बारी बारी कर सकते हैं एक आयत है । आयत आकार प्राप्त की एक छवि.मैं बदलने के लिए चाहते हैं के आकार आयत इतना है कि तुलना में छोटे छवि . कि मैं कोशिश को बदलने के साथ topleft और topright. यह doesent काम करते हैं.

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

सबसे अच्छा जवाब

1

सब तुम्हें क्या करना है के आकार को कम इनपुट आयत. का उपयोग करें pygame.Rect.inflate के साथ साथ नकारात्मक मूल्यों को कम करने के लिए आकार की आयत है:

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

कोड में नीचे दिए गए:

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

के topleft[0] है top; topright[0] है भी की top.

तो top + 25, top - 25 के बराबर होती है top + 0 तो कुछ भी नहीं बदला है.

हो सकता है कि आप चाहते हैं को संशोधित करने के लिए bottomright.

एक छोटी सी टिप: डिबग लाइन से लाइन और ध्यान का भुगतान करने के लिए परिवर्तन के चर, आप पा सकते हैं के बीच विसंगतियों के कार्यक्रम के क्रियान्वयन और उम्मीद प्रभाव और अधिक आसानी से

2021-11-24 03:50:00

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में