影像傳輸問題 |
答題得分者是:taishyang
|
pc006257
一般會員 發表:4 回覆:1 積分:1 註冊:2003-08-20 發送簡訊給我 |
======================================================================
SERVER
======================================================================
void __fastcall TForm1::FormCreate(TObject *Sender)
{
IdTCPServer1->Active=True;
}
//-------------------------------------------------------------------- void __fastcall TForm1::IdTCPServer1Execute(TIdPeerThread *AThread)
{
AnsiString str=AThread->Connection->ReadLn();
if(str=="start")
{
Graphics::TBitmap *bitmap = new Graphics::TBitmap;
TMemoryStream *BitmapStream = new TMemoryStream();
try
{
POINT pt;
BitmapStream->Clear();
bitmap->PixelFormat = pf16bit;
bitmap->Width = ::GetSystemMetrics(SM_CXSCREEN);
bitmap->Height = ::GetSystemMetrics(SM_CYSCREEN);
HDC hDC = ::GetDC(0);
::BitBlt(bitmap->Canvas->Handle, 0, 0,bitmap->Width,bitmap-> Height,hDC, 0, 0,SRCCOPY);
HCURSOR hCur=::GetCursor();
::GetCursorPos(&pt);
DrawIcon(bitmap->Canvas->Handle, pt.x, pt.y, hCur);
bitmap->SaveToStream(BitmapStream);
::ReleaseDC(bitmap->Canvas->Handle,hDC);
delete bitmap;
AThread->Connection->WriteStream(BitmapStream,true,true);
}
__finally
{
delete BitmapStream;
}
}
}
======================================================================
CLIENT
======================================================================
void __fastcall TForm1::Button1Click(TObject *Sender)
{
IdTCPClient1->Host=Edit1->Text;
IdTCPClient1->Port=4000;
IdTCPClient1->Connect();
Timer1->Enabled=true;
}
//------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if (IdTCPClient1->Connected())
{
TMemoryStream *BitmapStream=new TMemoryStream();
try
{
IdTCPClient1->WriteLn("start");
IdTCPClient1->ReadStream(BitmapStream, -1, true);
BitmapStream->Position=0;
Image1->Picture->Bitmap->LoadFromStream(BitmapStream);
}
__finally
{
delete BitmapStream;
}
}
else
ShowMessage("尚未連接");
}
//-------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender)
{
Timer1->Enabled=false;
IdTCPClient1->Disconnect();
Close();
}
//-------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender)
{
Timer1->Enabled=false;
Timer1->Interval=3000; }
小弟宣告了一個TMemoryStream來存影像
並且用TCP來作傳輸,不過接收端都沒
辦法顯示在Image上,請問是我的程式有
錯嗎?
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
pc006257您好:
您可以參考RaynorPao版主的經典範例
【發表】螢幕畫面傳輸 (Client/Server)
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=36068 順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~>
|
pc006257
一般會員 發表:4 回覆:1 積分:1 註冊:2003-08-20 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |