2011-06-04 27 views
13

Estoy aprendiendo pygame y quiero un gráfico para un botón con los tres estados: normal, hover y presionado. Tengo una imagen como ésta ...¿Cómo puedo recortar una imagen con Pygame?

Three button states, stacked vertically

... y quiero conseguir un nuevo Surface utilizando una parte de ella.

Estoy cargando la imagen con este código:

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

¿Cómo puedo hacer una nueva superficie utilizando sólo una parte de ese gráfico?

Respuesta

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

El método blit sobre una superficie 'pega' otra superficie sobre el mismo. El primer argumento para blit es la superficie de origen. El segundo es la ubicación para pegar (en este caso, la esquina superior izquierda). El tercer argumento (opcional) es el área de la imagen de origen desde la que pegar, en este caso un cuadrado de 80x80, 30 píxeles desde la parte superior y 30 píxeles desde la izquierda.

+0

Gracias tanto! Tu respuesta me ayudó a entender qué hace el método blit y cómo. Adapté tu ejemplo a mi código y lo que esperaba, ¡lo que obtuve! – dobleseis

-1

Creo que la mejor manera de hacerlo es recortar la imagen de estos 3 tipos de botones en un programa externo y la carga en una superficie diferente en lugar de utilizar pygame para recortarla

Cuestiones relacionadas