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

利用panel連續貼圖,出現畫面閃動情形

答題得分者是:ikk
CWKid
一般會員


發表:6
回覆:10
積分:3
註冊:2007-07-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-04-02 16:24:39 IP:140.112.xxx.xxx 訂閱
小弟最近在學習利用panel從檔案中連續讀圖

讓panel畫面看起來像是在撥連續影面

可是會出現畫面閃動的情形

我有找過板上的文章

有大大建議在FormCreate的地方加上

Panel1->DoubleBuffered = true;

小弟也試過了

可是還是有閃動的情形

以下是小弟在貼圖的程式碼,這段程式碼是寫在Timer裡的間隔時間為100
[code cpp]
jpg->LoadFromFile("half.jpg");
Panel1->Width = jpg->Width;
Panel1->Height = jpg->Height;
WndRgn = CreateRectRgn(0,0,jpg->Width,jpg->Height);
SetWindowRgn(Panel1->Handle,WndRgn,true);
UpdateWindow(Panel1->Handle);
c->Handle=GetDC(Panel1->Handle);
c->Draw(0,0,jpg);
[/code]
不知道板上的高手們是否有解決之道
編輯記錄
CWKid 重新編輯於 2009-04-02 16:34:19, 註解 無‧
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-04-02 16:51:00 IP:163.28.xxx.xxx 訂閱
何不用TImage??


[code cpp]
Image1->Picture->LoadFromFile("D:\\half.jpg");
Panel1->Width = Image1->Width;
Panel1->Height = Image1->Height;
Panel1->Refresh();

[/code]
------
FPGA驗證, FPGA開發平台, http://smims.com
編輯記錄
ikk 重新編輯於 2009-04-02 16:51:40, 註解 無‧
CWKid
一般會員


發表:6
回覆:10
積分:3
註冊:2007-07-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-04-02 17:12:42 IP:140.112.xxx.xxx 訂閱
感謝大大的回復

因為在網上看到有大大建議

若要貼圖看起來像在撥影片的話

那最好是用panel來貼圖

小弟也試過用TImage來貼圖

確實在顯像上有delay 的感覺

所以才會用panel來做

另外附註說明

小弟也有試著將圖貼在Form上

並且加上Form1->DoubleBuffered = true;

在Form上就不會有閃動的情形

這是為什麼呢

所以請問在panel上如何才能讓他不閃動呢?
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-04-02 17:21:15 IP:163.28.xxx.xxx 訂閱
或許是你迴圈放的位置, 多做了重覆的動作...
------
FPGA驗證, FPGA開發平台, http://smims.com
CWKid
一般會員


發表:6
回覆:10
積分:3
註冊:2007-07-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-04-02 17:36:15 IP:140.112.xxx.xxx 訂閱
小弟是用Timer去執行這段程式的

所以不了解大大說的"多做了重覆的動作"是什麼意思

小弟並沒有用到迴圈

感謝大大的回覆
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-04-02 17:48:02 IP:163.28.xxx.xxx 訂閱

有試過以下的 code 嗎?

[code cpp]
jpg->LoadFromFile("D:\\half.jpg");
Panel1->Width = jpg->Width;
Panel1->Height = jpg->Height;
//WndRgn = CreateRectRgn(0,0,jpg->Width,jpg->Height);
//SetWindowRgn(Panel1->Handle,WndRgn,true);
//UpdateWindow(Panel1->Handle);

c->Handle=GetDC(Panel1->Handle);
c->Draw(0,0,jpg);

[/code]
------
FPGA驗證, FPGA開發平台, http://smims.com
編輯記錄
ikk 重新編輯於 2009-04-02 17:48:22, 註解 無‧
CWKid
一般會員


發表:6
回覆:10
積分:3
註冊:2007-07-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-04-02 17:53:07 IP:140.112.xxx.xxx 訂閱
剛剛試了大大說要注解掉的部分

panel真的不閃動了

感謝大大的解惑

不過可以請問大大為什麼要這麼做嗎

小弟還不是很了解
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-04-02 18:04:38 IP:163.28.xxx.xxx 訂閱
你可以去研究看看那3個function的作用...
在這裡會變成多出的動作..
------
FPGA驗證, FPGA開發平台, http://smims.com
CWKid
一般會員


發表:6
回覆:10
積分:3
註冊:2007-07-29

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-04-02 18:11:55 IP:140.112.xxx.xxx 訂閱
感謝大大的解惑

小弟再去研究

系統時間:2024-04-27 7:49:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!