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

如何解決shape移動時會留在之前的位置留下形狀?

答題得分者是:wameng
yoan4560409
一般會員


發表:11
回覆:7
積分:3
註冊:2006-08-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-08-02 17:01:13 IP:140.116.xxx.xxx 訂閱
各位板友
小弟的程式中
在迴圈內會連續改變shape的位置
但是這樣做會在之前的位置留下殘影
亦即跑過的位置都會留下shape的形狀
請教該如何解決這個問題
謝謝
編輯記錄
taishyang 重新編輯於 2007-08-02 18:15:14, 註解 將文章分類成[問題]‧
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-08-02 18:15:42 IP:61.222.xxx.xxx 訂閱
 加入 ProcessMessage 在迴圈內,或改用 Timer 去控制移動。
yoan4560409
一般會員


發表:11
回覆:7
積分:3
註冊:2006-08-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-08-03 09:27:59 IP:140.116.xxx.xxx 訂閱
謝謝您~問題已解決
===================引 用 wameng 文 章===================
?加入 ProcessMessage 在迴圈內,或改用 Timer 去控制移動。
yoan4560409
一般會員


發表:11
回覆:7
積分:3
註冊:2006-08-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-08-03 11:56:10 IP:140.116.xxx.xxx 訂閱
另外想要請教
若我在子執行緒中
在迴圈內使用 ProcessMessages的方式
仍然會留下SHAPE的形狀
但若將迴圈放在主執行緒中則不會有此情形
想請教兩者差異在於?
另在子執行緒使用ProcessMessages的方法改如何改善留下形狀的問題?
謝謝指導
===================引 用 wameng 文 章===================
?加入 ProcessMessage 在迴圈內,或改用 Timer 去控制移動。
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-08-03 15:46:11 IP:61.64.xxx.xxx 訂閱
因為主執行緒沒有執行,就這簡單,沒有執行即沒有更新

將 ProcessMessages 改為 TSHAPE.Parent.Update;



===================引 用 yoan4560409 文 章===================
另外想要請教
若我在子執行緒中
在迴圈內使用ProcessMessages的方式
仍然會留下SHAPE的形狀
但若將迴圈放在主執行緒中則不會有此情形
想請教兩者差異在於?
另在子執行緒使用ProcessMessages的方法改如何改善留下形狀的問題?
謝謝指導
===================引 用 wameng 文 章===================
?加入 ProcessMessage 在迴圈內,或改用 Timer 去控制移動。
yoan4560409
一般會員


發表:11
回覆:7
積分:3
註冊:2006-08-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-08-06 09:10:03 IP:140.116.xxx.xxx 訂閱
謝謝您
我依照您的提示
使用Parent->Refresh的方式解決了

另外請教ProcessMessages 是針對主執行緒做插斷而沒有對子執行序做插斷嗎?
謝謝

===================引 用 syntax 文 章===================
因為主執行緒沒有執行,就這簡單,沒有執行即沒有更新

將 ProcessMessages 改為 TSHAPE.Parent.Update;



===================引 用 yoan4560409 文 章===================
另外想要請教
若我在子執行緒中
在迴圈內使用ProcessMessages的方式
仍然會留下SHAPE的形狀
但若將迴圈放在主執行緒中則不會有此情形
想請教兩者差異在於?
另在子執行緒使用ProcessMessages的方法改如何改善留下形狀的問題?
謝謝指導
===================引 用 wameng 文 章===================
?加入 ProcessMessage 在迴圈內,或改用 Timer 去控制移動。
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-08-08 16:20:56 IP:210.66.xxx.xxx 訂閱
ProcessMessages()之後加sleep(1)試試看...
===================引 用 yoan4560409 文 章===================
另外想要請教
若我在子執行緒中
在迴圈內使用ProcessMessages的方式
仍然會留下SHAPE的形狀
但若將迴圈放在主執行緒中則不會有此情形
想請教兩者差異在於?
另在子執行緒使用ProcessMessages的方法改如何改善留下形狀的問題?
謝謝指導
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-08-08 16:46:56 IP:61.222.xxx.xxx 訂閱
Refresh 既是 Repaint -> 就是強制要求物件重畫。
是全面重畫。 可能會導致在上面的物件會有閃爍的情形。

建議直接在 WinControl 上作畫處理invalidateRect,而非使用物件移動處理方式。
或者就不要用 GraphicControl 類

參考


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