napisałem kod do zrzutu ekranu ale jak jest uruchomiona gra to jest czarne zdjęcie. co muszę zrobić aby to działało?
0
0
Z pewnością jeden z tutejszych jasnowidzów udzieli Ci odpowiedzi... Może pokazał byś ten kod?
0
TCanvas &PulpitCanvas = *new TCanvas();
Graphics::TBitmap *Bmp = new Graphics::TBitmap;
PulpitCanvas.Handle = GetDC(0);
Bmp->Width = Screen->Width;
Bmp->Height = Screen->Height;
Bmp->Canvas->CopyRect(Rect(0, 0, Bmp->Width, Bmp->Height), &PulpitCanvas,
Rect(0, 0, Bmp->Width, Bmp->Height));
try
{
Bmp->SaveToFile("systemz\\bitmapa.bmp");
ReleaseDC(0, PulpitCanvas.Handle);
} catch(...) {
}
delete &PulpitCanvas;
delete Bmp;
int jakosc = 30;
AnsiString nazwa_pliku = "systemz\\bitmapa.bmp";
Graphics::TBitmap *bmp = new Graphics::TBitmap();
bmp->LoadFromFile(nazwa_pliku);
TJPEGImage *jpg = new TJPEGImage();
try
{
jpg->CompressionQuality = jakosc;
jpg->Assign(bmp);
jpg->Compress();
bmp->Assign(jpg);
jpg->SaveToFile(name.sprintf("systemz\\%d.jpg", nr));
remove ("systemz\\bitmapa.bmp");
} catch (...) {}
delete jpg;
delete Bmp;
0
Powiedz jeszcze w czym piszesz, bo w OpenGL jest do tego już gotowa funkcja
http://my.safaribooksonline.com/book/programming/opengl/0672326019/imaging-with-opengl/245#X2ludGVybmFsX0ZsYXNoUmVhZGVyP3htbGlkPTA2NzIzMjYwMTkvMjQ1
0
void screen(HWND Handle, const char *SaveTo)
{
RECT r;
GetWindowRect(Handle,&r);
TCanvas* WindowCanvas = new TCanvas();
Graphics::TBitmap *Bmp = new Graphics::TBitmap;
TJPEGImage *Jpg = new TJPEGImage();
WindowCanvas->Handle = GetDC(Handle);
Bmp->Width =r.right-r.left;
Bmp->Height =r.bottom-r.top;
Bmp->Canvas->CopyRect(Rect(0, 0, Bmp->Width, Bmp->Height), WindowCanvas,
Rect(0, 0, Bmp->Width, Bmp->Height));
Jpg->Assign(Bmp);
Jpg->SaveToFile(SaveTo);
delete Jpg;
delete Bmp;
delete WindowCanvas;
}
Wystarczy poszukać na forum...
http://4programmers.net/Forum/C_i_C++/185503-problem_z_kodem_robienie_screena