Jak zapisywać w jpg zrzut ekranu nawet z uruchomionej gry

0

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

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
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

1 użytkowników online, w tym zalogowanych: 0, gości: 1