Draw into Pixmap?

BlitzMax Forums/BlitzMax Programming/Draw into Pixmap?

Trader3564(Posted 2008) [#1]
Ok, here is the deal

1) i do a LoadAnimImage
2) i load a binary file & run through the bytes (=the map tiles)
3) i render the map of 9 layers using DrawImage

What i want is to create 9 new images, and IN THERE draw instead.
So i can toggle these layers, and do not have to redraw the tiles each time.
The maps are 608x576

I thoughd todo this using pixmap, but i seem to get stuck there...


Sledge(Posted 2008) [#2]
These are the main commands you'll be needing:
'Create a pixmap with alpha (you won't see the alpha respected when putting pixmap on backbuffer -- convert to image first)
CompositePixmap:TPixmap = CreatePixmap(608,576,PF_RGBA8888)

'Load your tile(s)
Tile:TPixmap = LoadPixmap("whatever.png")

'Paste your tile(s) onto the composite pixmap
CompositePixmap.Paste(Tile,whateverX,whateverY)

'Convert to image
CompositeImage:TImage = LoadImage(CompositePixmap)



Trader3564(Posted 2008) [#3]
Thanks for the help. tough, Problem here is that i work with tilesets. So i need to clip the source, or find a way to copy 1 tile from the tileset, and paste that into the pixmap. That is why i used LoadAnimImage.


Sledge(Posted 2008) [#4]
It's unfortunate that there's no DrawPixmapRect() (at least not to my knowledge*) so you'll either have to draw then GrabPixmap() each image or not store them as a tilestrip in the first place.

*EDIT: Aha! There's pixmap.Window(x,y,width,height), as mentioned here and also this nice twist on the paste method: destPixmap.Paste(sourceAnimImage.Lock(frame, 1, 0), destX, destY), as mentioned here.


Trader3564(Posted 2008) [#5]
Cool! Im gonne check that out.

-Edit-
I found what i was looking for here: http://www.blitzbasic.com/Community/posts.php?topic=74153#828522
It also handles transperancy of both the source and destination images together with brightness!