you can loadup the original image, grab the area you want and unload the original.
a quick and crude example
crop_down_x=-1
crop_down_y=-1
crop_up_x=-1
crop_up_y=-1
global spr_test
img_source=LoadImage("test.png")
spr_test=CreateSprite(img_source)
do
mouse_x=GetPointerX()
mouse_y=GetPointerY()
if GetRawMouseLeftPressed()
crop_down_x=mouse_x
crop_down_y=mouse_y
endif
if GetRawMouseLeftState()
DrawBox(crop_down_x, crop_down_y, mouse_x, mouse_y, c_red, c_red, c_red, c_red, 0)
endif
if GetRawMouseLeftReleased()
crop_up_x=mouse_x
crop_up_y=mouse_y
CropImage(crop_down_x, crop_down_y, crop_up_x, crop_up_y)
endif
Print( ScreenFPS() )
Sync()
loop
function CropImage(x1, y1, x2, y2)
old_image=GetSpriteImageID(spr_test)
render()
new_image=GetImage(x1, y1, x2-x1, y2-y1)
ClearScreen ()
SetSpriteImage(spr_test, new_image)
SetSpriteSize(spr_test, x2-x1, y2-y1)
deleteimage(old_image)
endfunction