Pystyykö SDL:llä ottamaan screenshottia ohjelmasta jotenkin?
Niinkun että sen vois vaikka tallentaa kuvapintaan tyyliin:
SDL_Surface *screenshot = OtaKuva(naytto);
Omasta ohjelmastaan? Tietenkin, voit luoda uuden pinnan (SDL_CreateRGBSurface) ja blitata sinne ohjelmasi pääpinnan. Kokoruudulta ei voi, kun se ei ole SDL:n omaisuutta. Silloin täytyy tukeutua kulloisenkin alustan tarjoamiin vaihtoehtoihin.
Omasta ohjelmasta saa screenshotin helpoiten SDL_SaveBMP funktiolla.
SDL_SaveBMP(nayttopinta, "kuvatiedostonnimi.bmp");
Palauttaa 0 jos onnistui.
Täsä samaa olen itsekkin kysynyt vasta, jos kun saisin toimimaan sen niin tämäkin kävisi, jos ja kun...
Mitenkäs tätä SDL_CreateRGBSurface:a sitten käytetään?
Millaisella koodinpätkällä tallennan SDL_Surface *screenshot -kuvapintaan nayton?
SDL-oppaan kakkososassa neuvotaan, miten kuvapintoja voi piirtää toisiin:
// Kopioidaan ihan yläkulmaan se pinta SDL_Rect alue; alue.x = 0; alue.y = 0; SDL_BlitSurface(lahdepinta, NULL, kohdepinta, &alue);
Tässä lahdepinta voi olla vaikka näyttöpinta ja kohdepinta luotu tuolla SDL_CreateRGBSurface-funktiolla. Funktion toiminnasta on kerrottu SDL:n dokumentaatiossa.
Helpoin tapa kuvakaappaukseno ttamiseen on kuitenkin tuo Lahhan kertoma SDL_SaveBMP, joka tallentaa pinnan suoraan bmp-tiedostoon.
Sain toimimaan jee kiitos ohjeista :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.