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

Re: [pygame] Background texture



Choplair wrote:
I've a 800*600px window and I want put in the background a small
image texture which is 10*10px!

Can you tell me how I can fill this texture in a all the window
(without creating a big 800*600 image.. T_T) ?
the way to do this would be tile the image by hand. if your performance needs aren't too tight a generic function would do the trick, i think i can whip one up right in this email..

def tileblit(src, dst):
srcw, srch = src.get_size()
dstw, dsth = dst.get_size()
for y in range(0, dsth, srch):
for x in range(0, dstw, srcw):
dst.blit(src, (x, y))

the biggest optimization you'd probably want is to limit this blit to a rectangular area. it is easy to use this with a full sized background image, but a bit of extra work for the tiling. here is a function that should do it.

def tileblitarea(src, dst, rectarea):
srcw, srch = src.get_size()
oldclip = dst.get_clip()
dst.set_clip(rectarea)
top = rectarea.top - rectarea.top % srch
left = rectarea.left - rectarea.left % srcw
for y in range(top, rectarea.bottom, srch):
for x in range(left, rectarea.right, srcw):
dst.blit(src, (x, y))
dst.set_clip(oldclip)

these tile blitting functions will work for source images of any size.