Как рассчитать середину экрана для pygame.Surface?

Я пытаюсь вычислить середину экрана для объекта изображения pygame.Surface. Я пытался сделать простое screen.blit(my_image, (0, 0)), но это не сработает. Есть ли способ, которым я могу рассчитать, где блистать изображение, чтобы оно было посередине? Каждое из моих изображений имеет разные размеры и т. д.

Редактировать:

Я понял это! Я сделал функцию:

screenw = 500
screenh = 500

# true_coords(pygame.Surface(...), (250, 250))
def true_coords(obj, coords):
    objw = obj.get_width()
    objh = obj.get_height()

    true_coords = coords[0] - (objw / 2), coords[1] - (objh /2)
    return(true_coords)

person Ivan Hrabciacik    schedule 18.07.2019    source источник
comment
stackoverflow.com/a/40954002/7690862   -  person Jake P    schedule 18.07.2019
comment
Возможный дубликат Получение центра поверхностей в pygame с питоном 3.4   -  person hoan duc    schedule 18.07.2019


Ответы (1)


Используйте класс Rect, чтобы сделать все расчеты за вас.

Имея Surface с именем surf и дисплей Surface с именем screen, вы можете сделать что-то вроде этого:

screen = pygame.display.set_mode(...)
screen_rect = screen.get_rect()

surf = pygame.Surface(...)
# set the center of the new Rect to the center of the screen
surf_rect = surf.get_rect(center=screen_rect.center)

screen.blit(surf, surf_rect)

Класс Rect имеет ряд полезных виртуальных атрибутов, таких как center, topleft, bottomright и т. д., которые можно использовать для удобного позиционирования Surface. Обычно вы используете Surface и Rect вместе, заключенные в Sprite< /а>.

person sloth    schedule 19.07.2019
comment
Спасибо за ответ! - person Ivan Hrabciacik; 19.07.2019