全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1372
推到 Plurk!
推到 Facebook!

畫面會一閃一閃的

答題得分者是:RaynorPao
jacky_chan
一般會員


發表:7
回覆:14
積分:4
註冊:2003-05-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-11 18:41:37 IP:211.22.xxx.xxx 未訂閱
各位大大您好: 這是延續之前做的程式所存在的問題,在 client 端的畫面會有閃動的情況發生,如果 timer 設得更小 (100) ,閃動的情況會更嚴重,不知有什麼方法能改善這種情形    以下是程式碼 謝謝各位大大 < class="code"> // server端 void __fastcall TForm1::Timer1Timer(TObject *Sender) { Graphics::TBitmap *bmpBuf; HDC hdc; int x,y; HCURSOR hCur; ICONINFO IconInfo; POINT pt; hdc=::GetDC(0); x=Screen->Width; y=Screen->Height; bmpBuf=new Graphics::TBitmap; bmpBuf->Handle=::CreateCompatibleBitmap(hdc, x, y); ::BitBlt(bmpBuf->Canvas->Handle, 0, 0, bmpBuf->Width, bmpBuf->Height, hdc, 0, 0, SRCCOPY); hCur=GetCursor(); IconInfo.fIcon=FALSE; GetIconInfo(hCur, &IconInfo); GetCursorPos(&pt); pt.x-=IconInfo.xHotspot; pt.y-=IconInfo.yHotspot; DrawIcon(bmpBuf->Canvas->Handle, pt.x, pt.y, hCur); //轉成jpg的格式 TJPEGImage *jpg = new TJPEGImage(); jpg->PixelFormat = jf8Bit; jpg->CompressionQuality = 10; jpg->Assign((TPersistent*)bmpBuf); delete bmpBuf; jpg->Compress(); TMemoryStream *msBuf=new TMemoryStream; jpg->SaveToStream(msBuf); msBuf->Position=0; NMStrm1->Host = "10.20.8.111"; NMStrm1->FromName = "10.20.8.111"; NMStrm1->PostIt(msBuf); //NMStrm1->Disconnect(); msBuf->Clear(); delete jpg; delete msBuf; } //----------------------------------------------------- client端 //--------------------------------------------------------------------------- void __fastcall TForm1::NMStrmServ1MSG(TComponent *Sender, const AnsiString sFrom, TStream *strm) { char *buffer = new char[strm->Size 1]; strm->ReadBuffer(buffer,strm->Size); TMemoryStream *ms=new TMemoryStream; ms->Write(buffer,strm->Size 1); ms->Position=0; TJPEGImage *jpg = new TJPEGImage () ; jpg->LoadFromStream(ms) ; Image1->Picture->Bitmap->Assign(jpg); delete jpg ; Refresh(); ms->Clear(); } //-----------------------------------------------------
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-11 20:04:54 IP:61.221.xxx.xxx 未訂閱
引言: 各位大大您好: 這是延續之前做的程式所存在的問題,在 client 端的畫面會有閃動的情況發生,如果 timer 設得更小 (100) ,閃動的情況會更嚴重,不知有什麼方法能改善這種情形 以下是程式碼 謝謝各位大大 < class="code"> // server端 void __fastcall TForm1::Timer1Timer(TObject *Sender) { Graphics::TBitmap *bmpBuf; HDC hdc; int x,y; HCURSOR hCur; ICONINFO IconInfo; POINT pt; hdc=::GetDC(0); x=Screen->Width; y=Screen->Height; bmpBuf=new Graphics::TBitmap; bmpBuf->Handle=::CreateCompatibleBitmap(hdc, x, y); ::BitBlt(bmpBuf->Canvas->Handle, 0, 0, bmpBuf->Width, bmpBuf->Height, hdc, 0, 0, SRCCOPY); hCur=GetCursor(); IconInfo.fIcon=FALSE; GetIconInfo(hCur, &IconInfo); GetCursorPos(&pt); pt.x-=IconInfo.xHotspot; pt.y-=IconInfo.yHotspot; DrawIcon(bmpBuf->Canvas->Handle, pt.x, pt.y, hCur); //轉成jpg的格式 TJPEGImage *jpg = new TJPEGImage(); jpg->PixelFormat = jf8Bit; jpg->CompressionQuality = 10; jpg->Assign((TPersistent*)bmpBuf); delete bmpBuf; jpg->Compress(); TMemoryStream *msBuf=new TMemoryStream; jpg->SaveToStream(msBuf); msBuf->Position=0; NMStrm1->Host = "10.20.8.111"; NMStrm1->FromName = "10.20.8.111"; NMStrm1->PostIt(msBuf); //NMStrm1->Disconnect(); msBuf->Clear(); delete jpg; delete msBuf; } //----------------------------------------------------- client端 //--------------------------------------------------------------------------- void __fastcall TForm1::NMStrmServ1MSG(TComponent *Sender, const AnsiString sFrom, TStream *strm) { char *buffer = new char[strm->Size 1]; strm->ReadBuffer(buffer,strm->Size); TMemoryStream *ms=new TMemoryStream; ms->Write(buffer,strm->Size 1); ms->Position=0; TJPEGImage *jpg = new TJPEGImage () ; jpg->LoadFromStream(ms) ; Image1->Picture->Bitmap->Assign(jpg); delete jpg ; Refresh(); ms->Clear(); } //-----------------------------------------------------
jacky_chan 你好: 試試~~如果你的 Image1 是貼在 Form1 上的話,請加入以下這一行程式碼 Form1->DoubleBuffered=true; 如果你的 Image1 是貼在 Panel1 上的話,請加入以下這一行程式碼 Panel1->DoubleBuffered=true; -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
jacky_chan
一般會員


發表:7
回覆:14
積分:4
註冊:2003-05-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-11 20:57:41 IP:211.76.xxx.xxx 未訂閱
感謝 RaynorPao 大大的回應,真是"快狠準"啊,一針見血
系統時間:2024-04-28 2:16:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!