關於取得連線畫面時,貼圖閃爍的問題 |
答題得分者是:taishyang
|
robert1014
初階會員 發表:34 回覆:85 積分:43 註冊:2002-03-13 發送簡訊給我 |
當我取得連線影像,並縮放至panel1
用了以下的方法,仍有時會出現畫面閃爍(空白)的問題
請問各位,以下的程式片段是否有哪個地方錯誤
謝謝 BPicture:TBitmap; panel1.DoubleBuffered:=True;
hDC:=GetDC(panel1.Handle); hMemDC:=CreateCompatibleDC(hDC);
SelectObject(hMemDC,BPicture.Handle);
BitBlt(hMemDC,0,0,BPicture.Width,BPicture.Height,BPicture.Handle,0,0,SRCCOPY);
SetStretchBltMode(hDC,HALFTONE);
StretchBlt(hDC,0,0,panel1.Width,panel1.Height,hMemDC,0,0,BPicture.Width,BPicture.Height,SRCCOPY);
DeleteDC(hMemDC);
|
robert1014
初階會員 發表:34 回覆:85 積分:43 註冊:2002-03-13 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
robert1014您好:
將Image的Stretch的屬性改成true應該就可以了
或是參考
http://delphi.ktop.com.tw/topic.php?topic_id=18647
順心 發表人 -
|
robert1014
初階會員 發表:34 回覆:85 積分:43 註冊:2002-03-13 發送簡訊給我 |
謝謝
其實討論區內關於閃爍的關鍵字,我都已查過了
原程式前段如下
sImage:TMemoryStream;
JPicture:TJpegimage;
BPicture:TBitmap;
..............
sImage.WriteBuffer(arrData,iSize);
sImage.Position:=0;
JPicture.LoadFromStream(sImage);
BPicture.Width := JPicture.Width;
BPicture.Height := JPicture.Height;
BPicture.Canvas.Draw(0,0,JPicture);
................ 試的結果問題是出在 BPicture:TBitmap,若其改成 TImage 也
是會有閃爍的問題,只有改成 TPaintBox 才會正常
但若使用 TPaintBox 後,我後續的一些處理又不方便
因此才想問 TPaintBox 可否存成 Buffer 或將資料傳給 TImage 等物件
謝謝
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
robert1014
初階會員 發表:34 回覆:85 積分:43 註冊:2002-03-13 發送簡訊給我 |
謝謝,不過可能是我沒有說清楚
現程式已改成如下
sImage:TMemoryStream;
JPicture:TJpegimage;
pbPicture:TPaintBox; //需用此物件
..............
sImage.WriteBuffer(arrData,iSize);
sImage.Position:=0;
JPicture.LoadFromStream(sImage);
pbPicture.Width := JPicture.Width;
pbPicture.Height := JPicture.Height;
pbPicture.Canvas.Draw(0,0,JPicture); //用TPaintBox物件才可避免閃爍
................ 新的問題是
當我改用 pbPicture 接收影像之後,有作了一些圖形的處理
如 pbPicture.Canvas.Textout(3, 2, 'Delphi'); 等等
因此才想問處理後的 pbPicture,TPaintBox這個物件
該如何將資料存成Buffer或傳給其他的物件,如 TImage 等等
謝謝
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
robert1014您好:
引言:處理後的 pbPicture,TPaintBox這個物件該如何將資料存成Buffer或傳給其他的物件,如 TImage 等等是不是這樣?? PaintBox1處理過後 PaintBox1->Canvas->Draw(0,0,Image1->Picture->Bitmap); 附帶一提,我用Image接收連續影像並不會有閃爍的現象耶... 只要將Image的Stretch的屬性改成true 或是加入 Image1->Height=BPicture->Height; Image1->Width =BPicture->Width; Image1->Canvas->Draw( 0,0,BPicture ) ; 都可以避免閃爍的現象 順心 發表人 - |
robert1014
初階會員 發表:34 回覆:85 積分:43 註冊:2002-03-13 發送簡訊給我 |
謝謝,不過應該不是這個樣子吧
您寫的是將 Image1->Picture->Bitmap 給 PaintBox1
我要的剛好是相反 是的,我原本也是用
Image1->Canvas->Draw( 0,0,BPicture ) ;
或 Bitmap1->Canvas->Draw( 0,0,BPicture ) ;
將JPEG影像轉成Bitmap,雖然出現整頁空白閃爍的情況
不常發生,但是偶爾還是會出現
直到我改用TPaintBox,才一切正常 發表人 - robert1014 於 2003/04/09 23:48:47
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
robert1014
初階會員 發表:34 回覆:85 積分:43 註冊:2002-03-13 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
robert1014
初階會員 發表:34 回覆:85 積分:43 註冊:2002-03-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |