|
안녕하세요...<장성호님..디버깅 관련 글 고맙습니다...(원했던 답변으로 ... 아주 인상깊게 보았습니다)>
하나의 타이머에서... 스크린 전체를 bitmap 캡처해서 hdd에 저장... 했다가
다시 뿌려주는데... 화면에 동영상이 돌고 있는 자리는 검은색으로만 표시됩니다.
동영상이 실행되고 있는 자리를 캡쳐 하고 싶은데... 일반적인 화면 캡쳐하는 방법으로는 안되는것은데..
어떤 방법으로 해결할수 있나요?
==== test code===
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
AnsiString msg;
static int i=0;
msg.sprintf("Screen Shoot %d",i++);
lblShot->Caption=msg;
HDC dc = GetDC(0);
Graphics::TCanvas *s = new Graphics::TCanvas;
s->Handle=dc;
screenImage = new TImage(Form1);
screenImage->Picture->Bitmap->Width=Screen->Width;
screenImage->Picture->Bitmap->Height=Screen->Height;
TRect rect = Rect ( 0, 0,Screen->Width, Screen->Height);
screenImage->Picture->Bitmap->Canvas->CopyRect(rect,s, rect );
screenImage->Picture->Bitmap->SaveToFile("c:\\a.bmp");
delete s;
delete screenImage;
ReleaseDC (NULL,dc);
Image1->Picture->Bitmap->LoadFromFile( "c:\\a.bmp" );
}
( 첨부된 화일 aa.jpg는 곰플레어를 캡쳐한것인데... 실제로 저는 direct show를 이용한 dspack2.34 이용해서 player를 만들었는데.. 곰플레이어를 캡쳐할때와 똑같이... 화면캡쳐가 안됩니다 )
수고하세요..
|