Saltar al contenido

¿Cómo puedo recortar una imagen con Pygame?

Solución:

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

El método blit en una superficie ‘pega’ otra superficie sobre ella. El primer argumento para blit es la superficie de la fuente. La segunda es la ubicación donde pegar (en este caso, la esquina superior izquierda). El tercer argumento (opcional) es el área de la imagen de origen desde la que se va a pegar, en este caso un cuadrado de 80×80, 30px desde la parte superior y 30px desde la izquierda.

También puede utilizar el pygame.Surface.subsurface método para crear subsuperficies que comparten sus píxeles con su superficie principal. Sin embargo, debe asegurarse de que el rectángulo esté dentro del área de la imagen o ValueError: subsurface rectangle outside surface area se levantará.

subsurface = a_surface.subsurface((x, y, width, height))

Hay 2 posibilidades.

los blit El método permite especificar una subárea rectangular de la fuente _Surface:

[…] También se puede pasar un rectángulo de área opcional. Esto representa una porción más pequeña de la superficie de origen para dibujar. […]

De esta manera puedes blit un área de la superficie de origen directamente sobre un objetivo:

cropped_region = (x, y, width, height)
traget.blit(source_surf, (posx, posy), cropped_region)

Alternativamente, puede definir un subsuelo que esté directamente vinculado a la superficie de origen con el método subsurface:

Devuelve una nueva Surface que comparte sus píxeles con su nuevo padre. La nueva Surface se considera hija de la original. Las modificaciones a cualquiera de los píxeles de la superficie se afectarán entre sí.

Tan pronto como se haya creado un subsuelo, se puede utilizar como superficie normal en cualquier momento:

cropped_region = (x, y, width, height)
cropped_subsurf = source_surf.subsurface(cropped_region)
traget.blit(cropped_subsurf, (posx, posy))
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *