Open In App

Pygame – Surface

Improve
Improve
Like Article
Like
Save
Share
Report

When using Pygame, surfaces are generally used to represent the appearance of the object and its position on the screen. All the objects, text, images that we create in Pygame are created using surfaces.

Creating a surface

Creating surfaces in pygame is quite easy. We just have to pass the height and the width with a tuple to pygame.Surface() method. We can use various methods to format our surface as we want. For example, we can use pygame.draw() to draw shapes, we can use surface.fill() method to fill on the surface. Now, the implementation of these functions. Let’s discuss syntax and parameters.

Syntax: pygame.surface()

It takes 4 arguments a tuple of width and height, flags, depth, mask.

pygame.draw():

It is used to draw an object, shape.

Syntax: Surface.rect(surface, color, rect)

The code for drawing a rectangle using the pygame.draw.rect() method is below:

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()


Output:

surface_name.fill():

pygame.Surface.fill: It is used for filling color in the surface.

Syntax:pygame.Surface.fill(color, rect=None, special_flags=0)

The code for filling color in the surface using the surface_name.fill() method is:

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()


Output:

Loading image on the surface

Although we can draw shapes and fill out colors on the surface, we still need to have a picture on the surface. We can make such a surface easily with pygame.image.load() method. This method takes the image path relative or absolute as an input.

Syntax: pygame.image.load(img) 

Code:

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()


Output:

Adding Blitting

For a surface to be displayed it needs to blitted on the screen. Blitting can be thought of as copying the pixels of one surface to another. We can blit by using the surface.blit() method which takes a surface that needs to be blit as the first argument and the tuple of coordinates as a second coordinate.

Syntax: pygame.Surface.blit(source, dest, area=None, 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()


Output:

Now that we have already discussed some surface functions like .blit(), .fill(), etc. Let us discuss some more important functions of pygame screens.

  • pygame.Surface.convert: It makes a copy of the surface with pixel format changed. The new pixel format can be determined from an existing surface or depth, flags, and masks arguments can be used.

Syntax: pygame.Surface.convert(Surface=None)
 

Code:

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()


Output:

  • pygame.Surface.convert_alpha: It creates a new copy of the surface with the desired pixel format. The new surface will be in a format suited for quick blitting to the given format with per-pixel alpha. If no surface is given, the new surface will be optimized for blitting to the current display.

Syntax: pygame.Surface.convert_alpha(Surface) 

Code:

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()


Output:

  • pygame.Surface.copy: It creates a new copy of the surface. The duplicate surface will have the same pixel formats, color palettes, transparency settings, and class as the original.

Syntax: pygame.Surface.copy()

Code:

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()


Output:

  • pygame.Surface.set_colorkey: Set the current color key for the surface. When blitting this surface onto a destination, any pixels that have the same color as the colorkey will be transparent.

Syntax: set_colorkey(Color, flags=0)  

Code: 

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()


 
 Output:

 

The output of the above code will be geeksforgeeks logo on a black surface with white-colored pixel changed to transparent.
 

  • pygame.Surface.get_colorkey: It returns the current color key value for the Surface. If the color key is not set, then None is returned.

Syntax: get_colorkey()

Code: 

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()


Output:

The output of the above code will be a window showing various surfaces as seen in the get_colorkey example as well as the colorkey value will also be printed.

  • pygame.Surface.set_alpha: The alpha value set for the full surface image.  Pass 0 for invisible and 255 for fully opaque.

Syntax: set_alpha(value, flags=0) or set_alpha(None)

Code:

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()


Output:

 

The output of the above code will be, geeksforgeeks logo, which will be slightly transparent as we have changed its alpha value to 100.

  • pygame.Surface.get_alpha: It returns the current alpha value for the surface.

Syntax: get_alpha()

 Code:

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()


Output: 

The output of the above code will be a window showing various surfaces as seen in the set_alpha example as well as the alpha value will also be printed.



Last Updated : 29 Dec, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads