Как обрезать изображение с помощью Pygame?

Я изучаю pygame и хочу графику для кнопки с тремя состояниями: нормальным, зависающим и нажатым. У меня есть изображение, подобное этому...

Three button states, stacked vertically

... и я хочу получить новый Surface, используя его часть.

Я загружаю изображение с помощью этого кода:

 buttonStates = pygame.image.load(os.path.join('image','button.png'))

Как я могу создать новую поверхность, используя только часть этой графики?

Ответы

Ответ 1

cropped = pygame.Surface((80, 80))
cropped.blit(buttonStates, (0, 0), (30, 30, 80, 80))

Бледный метод на поверхности "приклеивает" к нему другую поверхность. Первым аргументом blit является исходная поверхность. Второй - это место для вставки (в данном случае, левого верхнего угла). Третий (необязательный) аргумент - это область исходного изображения для вставки из - в этом случае квадрат размером 80x80 30px сверху и 30px слева.

Ответ 2

Я думаю, что лучший способ сделать это - обрезать изображение этих трех типов кнопок во внешней программе и загрузить на другой поверхности, вместо этого использовать pygame, чтобы обрезать его