I’m using pygame to show two images: I’ve maneged to resize the images according to the screen size of my user. But I’d like to standardized also the x and the y coordination position of my images. The images should always be in the middle according to the y axis and have the a little bit of pad to stay close to the border of the monitor like this no matter what resolution my user has:
This are the values that I’d like to standardized
WIN.blit(FIRST_IMG, (100, 280)) WIN.blit(SECOND_IMAGE, (1350, 280))
This is my code right now:
import pygame import os WIN = pygame.display.set_mode((0, 0), pygame.FULLSCREEN) WHITE = (255, 255, 255) FPS = 60 SCREEN_INFO = pygame.display.Info() IMAGE_WIDTH, IMG_HEIGHT = SCREEN_INFO.current_w // 5, SCREEN_INFO.current_h // 3 FIRST_IMG = pygame.image.load(os.path.join("Assets", "7.png")) FIRST_IMG = pygame.transform.scale(FIRST_IMG, (IMAGE_WIDTH, IMG_HEIGHT)) SECOND_IMAGE = pygame.image.load(os.path.join("Assets", "8.png")) SECOND_IMAGE = pygame.transform.scale(SECOND_IMAGE, (IMAGE_WIDTH, IMG_HEIGHT)) def draw_window(): WIN.fill(WHITE) WIN.blit(FIRST_IMG, (100, 280)) WIN.blit(SECOND_IMAGE, (1350, 280)) pygame.display.update() def main(): clock = pygame.time.Clock() run = True while run: clock.tick(FPS) for event in pygame.event.get(): if event.type == pygame.QUIT: run = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: run = False draw_window() pygame.quit() if __name__ == "__main__": main()
Advertisement
Answer
Get the bounding rectangle of the image and set the centery
and left
or right of the rectangle depending on the size of WIN
. Use the rectangles to blit
the images:
def draw_window(): width, height = WIN.get_size() WIN.fill(WHITE) first_rect = FIRST_IMG.get_rect(midleft = (100, height // 2)) WIN.blit(FIRST_IMG, first_rect) second_rect = FIRST_IMG.get_rect(midright = (width - 100, height // 2)) WIN.blit(SECOND_IMAGE, second_rect) pygame.display.update()