Code: Select all
Procedure GrabImage2(ImageNumber1.l, ImageNumber2.l, dx.l, dy.l, dw.l, dh.l)
Protected W.l, H.l, *MemoryTarget, *MemoryTemp, Y.l, Target.l, Origin.l
CreateImage(ImageNumber2, dw, dh, 32)
IsImage(ImageNumber2)
StartDrawing(ImageOutput(ImageNumber2))
*MemoryTarget = DrawingBuffer()
StopDrawing()
IsImage(ImageNumber1)
StartDrawing(ImageOutput(ImageNumber1))
*MemoryTemp = DrawingBuffer()
W = ImageWidth(ImageNumber1)
H = ImageHeight(ImageNumber1)
StopDrawing()
For Y =(dy+dh) To (dy+1) Step -1
Origin = ((H-Y)*W+dx)*4
CopyMemory(*MemoryTemp + Origin, *MemoryTarget+Target, dw*4)
Target + dw*4
Next
EndProcedure
CreateImage(1, 640, 480, 32)
GrabImage2(1, 2, 20, 40, 600, 400)
Debug Str(Y) + ' > '+ Str(Origin) wrote: 480 > 0
479 > 2560
478 > 5120
477 > 7680
476 > 10240
...
4 > 1218560
3 > 1221120
2 > 1223680
1 > 1226240