[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Surfaces with Transparent Backgrounds



Hi, I don't know Pygame that well and have never used subsurfaces
but it it looks kinda interesting. Would you do the subsurface
approach in the following way?

def load_strip(filename, width):
  imgs = []
  img = load_image(filename)
  for x in range(img.get_width()/width):
      i = img.subsurface(pygame.Rect(-x*width, 0, width, img.get_height()))
      imgs.append(i)
  return imgs


Patrick Mullen schrieb:
Lenard: his problems was that he was blitting that per-pixel alpha
surface onto a newly created surface which also had to be per-pixel
alpha, and wasn't sure how to create that. But he figured it out :)



Pymike, that's one way to do it, another way would be to use
subsurfaces.  They are a bit nicer because you don't have to go
through the hassle of making a separate surface for each frame.  I
think they might take less memory as well.


On Thu, Aug 20, 2009 at 8:47 PM, Lenard Lindstrom<len-l@xxxxxxxxx> wrote:
Hi pymike,

I don't understand what you are doing here. If you load an image with
per-pixel alpha, the returned surface will also have per-pixel alpha. All
convert_alpha() may do here is improve performance by formating the surface
to match the display. Of course this is with Pygame 1.9.1. Earlier Pygames
may have a problem with 32bit to 32bit surface blits.

Lenard Lindstrom

pymike wrote:
Aha! Figured it out!

def load_strip(filename, width):
   imgs = []
   img = load_image(filename)
   for x in range(img.get_width()/width):
*        i = pygame.Surface((width, img.get_height())).convert_alpha()
       i = i.convert_alpha()
       i.fill((255,255,255,0))*
       i.blit(img, (-x*width, 0))
       imgs.append(i)
   return imgs

Everything's working awesome now.

--
- pymike