There are two methods of grabbing an area of an image and retaining transparency.
Method 1: Use the search button and you will find my code snippet which allows you to do it using memblocks. I will save you the trouble of searching (I know it can be a very difficult task for a lot of people).
`*********************************
` GET IMAGE WITH TRANSPARENCY
`*********************************
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
Local Width as Dword
Local Height as Dword
Local Depth as Dword
Local Red as Byte
Local Green as Byte
Local Blue as Byte
Local 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
Method 2. Install update 6 and use the new BITMAP FORMAT 21 command along with a flag of 2 on the GET IMAGE command.