GET IMAGE updated to support transparency by Scraggle9th May 2005 17:01
|
---|
Summary Retain ALL levels of transparency Description The problem with the GET IMAGE command is that if your image has various levels of transparency in it, when you use GET IMAGE all transparency is lost. You could use SET IMAGE COLORKEY but that only gets rid of the completely transparent areas and not the partially transparent bits. Code ` This code was downloaded from The Game Creators ` It is reproduced here with full permission ` http://www.thegamecreators.com `Get Image With Transparency `====================== `©Craig McFarlane `====================== `Written 9th May 2005 function GetImage(Image1,NewImage,Xstart,Ystart,Xsize as dword,Ysize as dword) `Find unused memblocks Memblock1 = 1 repeat inc Memblock1 until memblock exist(Memblock1) = 0 NewMemblock = 2 repeat inc NewMemblock until memblock exist(NewMemblock) = 0 `Set up variables Width as Dword Height as Dword Depth as Dword Red as Byte Green as Byte Blue as Byte Alpha as Byte `Do it! make memblock from image Memblock1,Image1 Width = memblock dword(Memblock1,0) Height = memblock dword(Memblock1,4) Depth = memblock dword(Memblock1,8) make memblock NewMemblock,(Width*Height)+12 Write memblock Dword NewMemblock,0,Xsize Write memblock Dword NewMemblock,4,Ysize Write memblock Dword NewMemblock,8,Depth Position = (Width * (Ystart)*4) + (Xstart*4) + 12 NewPosition = 12 for y = 1 to Ysize for x = 1 to Xsize Blue = memblock byte(Memblock1,Position) Green = memblock byte(Memblock1,Position+1) Red = memblock byte(Memblock1,Position+2) Alpha = memblock byte(Memblock1, Position+3) write memblock byte NewMemblock,NewPosition,Blue write memblock byte NewMemblock,NewPosition+1,Green write memblock byte NewMemblock,NewPosition+2,Red write memblock byte NewMemblock,NewPosition+3,Alpha inc Position,4 Inc NewPosition,4 next x inc Position , (width*4) - (Xsize*4) next y make image from memblock NewImage,NewMemblock delete memblock Memblock1 delete memblock NewMemblock endfunction |