Question

I'm making a game and I need to blit my objects inside the area of a specific image. I don't want to need my surface to blit these images. Is it possible? (I'm using pygame)

Was it helpful?

Solution

It would be better in the future if you would explain what you are trying to do a bit better since it would give you more answers :)

From what I have understood you want to blit an image onto another image:

For this code to work the following premises are set:

  • The folder which contains the program also contains the arbritary images named testimage.png and testimage0.jpg
  • PyGame is installed

I have written the following piece of code which you can run if you follow the above premises:

import pygame

screen = pygame.display.set_mode([800, 800], 0, 32)
#initiates screen

image1 = pygame.image.load('testimage0.jpg')
#testimage0.jpg is loaded into the variable image1

image2 = pygame.image.load('testimage.png').convert_alpha()
#testimage.png is loaded into the variable image2

while True:
    screen.fill([0, 0, 0])
    #screen is filled with a black background

    screen.blit(image1, [200, 200]) 
    #here image1 is blitted onto screen at the coordinates (200,200)

    image1.blit(image2, [0, 0])
    #here image2 is blitted onto image1 at the coordinates (0,0) which starts at the upper left of image1

    pygame.display.update()
    #updates display, which you can just ignore

Images are just surfaces with a sprite or picture on. The coordinate system of a surface always starts at the upper left (0,0), which is why (0,0) of image1 isn't the same as the (0,0) of screen.

I took a picture of the program and edited some arrows in to explain my point:

Hope this was a help and remember to accept as the answer if you find it acceptable.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top