Pygame – Superficie

Cuando se usa Pygame, las superficies generalmente se usan para representar la apariencia del objeto y su posición en la pantalla. Todos los objetos, texto, imágenes que creamos en Pygame se crean usando superficies.

Creando una superficie

Crear superficies en pygame es bastante fácil. Solo tenemos que pasar la altura y el ancho con una tupla al método pygame.Surface() . Podemos usar varios métodos para formatear nuestra superficie como queramos. Por ejemplo, podemos usar pygame.draw() para dibujar formas, podemos usar el método surface.fill( ) para rellenar la superficie. Ahora, la implementación de estas funciones. Analicemos la sintaxis y los parámetros.

Sintaxis : pygame.superficie()

Toma 4 argumentos una tupla de ancho y alto, banderas, profundidad, máscara.

pygame.draw():

Se utiliza para dibujar un objeto, forma.

Sintaxis: Surface.rect(superficie, color, rect)

El código para dibujar un rectángulo usando el método pygame.draw.rect() está a continuación:

Python

# Importing the library
import pygame
import time
   
# Initializing Pygame
pygame.init()
   
# Creating the surface
sample_surface = pygame.display.set_mode((400,300))
   
# Choosing red color for the rectangle
color = (255,255,0)
   
# Drawing Rectangle
pygame.draw.rect(sample_surface, color,
                 pygame.Rect(30, 30, 60, 60))
 
# The pygame.display.flip() method is used
# to update content on the display screen
pygame.display.flip()

Producción:

nombre_superficie.fill():

pygame.Surface.fill: Se utiliza para rellenar con color la superficie.

Sintaxis: pygame.Superficie. fill(color, rect=Ninguno, special_flags=0)

El código para rellenar el color en la superficie utilizando el método surface_name.fill() es:

Python

# Importing the library
import pygame
   
# Initializing Pygame
pygame.init()
   
# Creating the surface
sample_surface = pygame.display.set_mode((400,300))
   
# Choosing yellow color to fill
color = (255,255,0)
 
# filling color to the surface
sample_surface.fill(color)
 
# updating the display
pygame.display.flip()

Producción:

Cargando imagen en la superficie

Aunque podemos dibujar formas y rellenar colores en la superficie, todavía necesitamos tener una imagen en la superficie. Podemos hacer esa superficie fácilmente con el método pygame.image.load(). Este método toma la ruta de la imagen relativa o absoluta como entrada.

Sintaxis: pygame.image.load(img) 

Código:

Python

# Importing the library
import pygame
 
 
# Initializing Pygame
pygame.init()
 
# creating the display surface
display_surface = pygame.display.set_mode((500, 500 ))
 
# Creating the image surface
image = pygame.image.load('gfg_logo.png')
 
# putting our image surface on display
# surface
display_surface.blit(image,(100,100))
 
# updating the display
pygame.display.flip()

Producción:

Agregar borrado

Para que una superficie se muestre, debe borrarse en la pantalla. Se puede pensar en el blitting como en copiar los píxeles de una superficie a otra. Podemos hacer blit usando el método surface.blit() que toma una superficie que necesita ser blit como primer argumento y la tupla de coordenadas como segunda coordenada.

Sintaxis: pygame.Superficie. blit(origen, destino, area=Ninguno, special_flags=0)

Python

# Importing the library
import pygame
 
# Initializing Pygame
pygame.init()
 
# creating the display surface
display_surface = pygame.display.set_mode((500, 500 ))
 
# Creating the first image surface
image1 = pygame.image.load('gfg_logo.png')
 
# Creating the second image surface
image2 = pygame.image.load('gfg_logo.png')
 
# putting our first image surface on
# display surface
display_surface.blit(image1,(0,0))
 
# putting our second image surface on
# display surface
display_surface.blit(image1,(300,300))
 
# updating the display
pygame.display.flip()

Producción:

Ahora que ya hemos discutido algunas funciones de superficie como .blit(), .fill(), etc. Analicemos algunas funciones más importantes de las pantallas de pygame.

  • pygame.Surface.convert: Hace una copia de la superficie con el formato de píxel cambiado. El nuevo formato de píxel se puede determinar a partir de una superficie o profundidad existente, se pueden usar banderas y argumentos de máscaras.

Sintaxis : pygame.Surface.convert(Surface=Ninguno)
 

Código:

Python

# Importing the library
import pygame
   
# Initializing Pygame
pygame.init()
   
# Creating the surface
sample_surface = pygame.display.set_mode((400,300))
 
# changing the pixel format of an image
pygame.Surface.convert(sample_surface)
 
# updating the display
pygame.display.flip()

Producción:

  • pygame.Surface.convert_alpha: Crea una nueva copia de la superficie con el formato de píxel deseado. La nueva superficie estará en un formato adecuado para una transferencia rápida al formato dado con alfa por píxel. Si no se proporciona ninguna superficie, la nueva superficie se optimizará para mostrarse en la pantalla actual.

Sintaxis: pygame.Surface.convert_alpha(Superficie) 

Código:

Python

# Importing the library
import pygame
   
# Initializing Pygame
pygame.init()
   
# Creating the surface
sample_surface = pygame.display.set_mode((400,300))
 
# changing the pixel format
# of an image including per pixel alphas
pygame.Surface.convert_alpha(sample_surface)
 
# updating the display
pygame.display.flip()

Producción:

  • pygame.Surface.copy: Crea una nueva copia de la superficie. La superficie duplicada tendrá los mismos formatos de píxeles, paletas de colores, configuración de transparencia y clase que la original.

Sintaxis: pygame.Surface.copy()

Código:

Python

# Importing the library
import pygame
   
# Initializing Pygame
pygame.init()
   
# Creating the surface
sample_surface = pygame.display.set_mode((400,300))
 
# creating a copy of sample_surface
# and naming it as copied_surface
copied_surface=pygame.Surface.copy(sample_surface)
 
# updating the display
pygame.display.flip()

Producción:

  • pygame.Surface.set_colorkey: establece la clave de color actual para la superficie. Al convertir esta superficie en un destino, cualquier píxel que tenga el mismo color que la clave de color será transparente.

Sintaxis: set_colorkey(Color, banderas=0)  

Código: 

Python

# Importing the library
import pygame
 
# Initializing Pygame
pygame.init()
 
# creating the display surface
display_surface = pygame.display.set_mode((500, 500 ))
 
# Creating the image surface
image = pygame.image.load('gfg_logo.png')
 
# putting our image surface on display surface
# making the white colored part
# of the surface as transparent
pygame.Surface.set_colorkey (image, [255,255,255])
 
display_surface.blit(image,(100,100))
 
# updating the display
pygame.display.flip()

 
 Producción:

El resultado del código anterior será el logotipo de geeksforgeeks en una superficie negra con un píxel de color blanco cambiado a transparente.
 

  • pygame.Surface.get_colorkey: Devuelve el valor de clave de color actual para la superficie. Si la clave de color no está configurada, se devuelve Ninguno.

Sintaxis: get_colorkey()

Código: 

Python

# Importing the library
import pygame
 
# Initializing Pygame
pygame.init()
 
# creating the display surface
display_surface = pygame.display.set_mode((500, 500))
 
# Creating the image surface
image = pygame.image.load('gfg_logo.png')
 
# putting our image surface on display surface
# making the white colored part of the surface
# as transparent
pygame.Surface.set_colorkey(image, [255, 255, 255])
 
# printing the colorkey value for the surface
print(pygame.Surface.get_colorkey(image))
 
display_surface.blit(image, (100, 100))
 
# updating the display
pygame.display.flip()

Producción:

La salida del código anterior será una ventana que muestra varias superficies como se ve en el ejemplo de get_colorkey y también se imprimirá el valor de la clave de color.

  • pygame.Surface.set_alpha: el valor alfa establecido para la imagen de superficie completa. Pase 0 para invisible y 255 para totalmente opaco.

Sintaxis: set_alpha(valor, banderas=0) o set_alpha(Ninguno)

Código:

Python

# Importing the library
import pygame
 
# Initializing Pygame
pygame.init()
 
# creating the display surface
display_surface = pygame.display.set_mode((500, 500 ))
 
# Creating the image surface
image = pygame.image.load('gfg_logo.png')
 
# putting our image surface on display surface
# making the alpha value of surface as 100
pygame.Surface.set_alpha(image, 100)
 
display_surface.blit(image,(100,100))
 
# updating the display
pygame.display.flip()

Producción:

El resultado del código anterior será el logotipo de geeksforgeeks, que será ligeramente transparente ya que hemos cambiado su valor alfa a 100.

  • pygame.Surface.get_alpha: Devuelve el valor alfa actual de la superficie.

Sintaxis: get_alpha()

 Código:

Python

# Importing the library
import pygame
 
# Initializing Pygame
pygame.init()
 
# creating the display surface
display_surface = pygame.display.set_mode((500, 500 ))
 
# Creating the image surface
image = pygame.image.load('gfg_logo.png')
 
# putting our image surface on display surface
# making alpha value of image surface to 100
pygame.Surface.set_alpha(image, 100)
 
# printing the alpha value of the surface
print(pygame.Surface.get_alpha(image))
 
display_surface.blit(image,(100,100))
 
# updating the display
pygame.display.flip()

Producción: 

La salida del código anterior será una ventana que muestra varias superficies como se ve en el ejemplo set_alpha y también se imprimirá el valor alfa.

Publicación traducida automáticamente

Artículo escrito por yashgupta0524 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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