Page 1 of 1

Screenshot to sprite?

Posted: Wed Jul 30, 2003 10:37 pm
by Kale
Any ideas how i can make a screenshot then make a 3dsprite from it during runtime? This doesn't seem to work:

Code: Select all

;capture a piece of screen
Procedure.l CaptureScreen(Left.l, Top.l, Width.l, Height.l)
    dm.DEVMODE
    BMPHandle.l
    srcDC = CreateDC_("DISPLAY", "", "", dm)
    trgDC = CreateCompatibleDC_(srcDC)
    BMPHandle = CreateCompatibleBitmap_(srcDC, Width, Height)
    SelectObject_( trgDC, BMPHandle)
    BitBlt_( trgDC, 0, 0, Width, Height, srcDC, Left, Top, #SRCCOPY)
    OpenClipboard_(#NULL) 
    EmptyClipboard_()
    SetClipboardData_(2, BMPHandle)
    CloseClipboard_()
    DeleteDC_( trgDC)
    ReleaseDC_( BMPHandle, srcDC)
    ProcedureReturn BMPHandle
EndProcedure
...
ScreenCaptureAddress = CaptureScreen(192, 112, 256, 256)
CatchSprite(1, ScreenCaptureAddress, #PB_Sprite_Texture)
CreateSprite3D(1, 1)
...
It just seems to crash at the CatchSprite command :(

Posted: Thu Jul 31, 2003 1:10 pm
by Fred
This can't work as CatchSprite expect a BMP or other supported image format. But you could do it easily by using the StartDrawing(SpriteOutput()) combo and then blit you screenshot on it (will probably work with DrawImage() BTW).

Posted: Thu Jul 31, 2003 6:55 pm
by Kale
Did it like this, ta to Fred :)

Code: Select all

Procedure.l CaptureScreen(Left.l, Top.l, Width.l, Height.l)
    dm.DEVMODE
    BMPHandle.l
    srcDC = CreateDC_("DISPLAY", "", "", dm)
    trgDC = CreateCompatibleDC_(srcDC)
    BMPHandle = CreateCompatibleBitmap_(srcDC, Width, Height)
    SelectObject_( trgDC, BMPHandle)
    BitBlt_( trgDC, 0, 0, Width, Height, srcDC, Left, Top, #SRCCOPY)
    DeleteDC_( trgDC)
    ReleaseDC_( BMPHandle, srcDC)
    ProcedureReturn BMPHandle
EndProcedure

CreateSprite(1, 256, 256, 0)

ScreenCaptureAddress = CaptureScreen(192, 112, 256, 256)

StartDrawing(SpriteOutput(1))
    DrawImage(ScreenCaptureAddress, 0, 0)
StopDrawing()