Page 1 of 1

GrabImage2

Posted: Tue Jan 01, 2013 9:23 am
by oryaaaaa
I wanted to more fast code, and follows code.

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