Как обрезать изображение с помощью Pygame?
Я учусь pygame
и требуется графика для кнопки с тремя состояниями: normal, hover и pressed. У меня такой же образ ...
... и я хочу получить новый Surface
, используя часть его.
я загружаю изображение с этим кодом:
buttonStates = pygame.image.load(os.path.join('image','button.png'))
как я могу сделать новую поверхность, используя только часть этой графики?
3 ответов
cropped = pygame.Surface((80, 80))
cropped.blit(buttonStates, (0, 0), (30, 30, 80, 80))
метод blit на поверхности "вставляет" другую поверхность на нее. Первый аргумент blit-это исходная поверхность. Второе место вставить (в этом случае верхний левый угол). Третий (необязательный) аргумент-это область исходного изображения для вставки из -- в этом случае 80x80 квадратных 30px сверху и 30px слева.
вы также можете использовать pygame.Surface.subsurface
метод для создания подповерхностей, которые разделяют свои пиксели с родительской поверхностью. Однако вы должны убедиться, что прямая кишка находится внутри области изображения или ValueError: subsurface rectangle outside surface area
будет поднят.
subsurface = a_surface.subsurface((x, y, width, height))
Я думаю, что лучший способ сделать это-обрезать изображение этих 3-х видов кнопок во внешней программе и загрузить в другую поверхность вместо использования pygame, чтобы обрезать его