使用Delphi XE2我想讓一些按鈕在delphi應用程序中移動。delphi中的雙緩衝區
我寫了這個代碼:
procedure TForm1.DoSomething;
var x : integer;
begin
for x := 200 downto 139 do begin
// move two buttons
Button1.Top := x;
Button3.Top := x;
// skip some repaints to reduce flickering
if (x mod 7 = 1) then begin
Form1.Repaint;
Sleep(50);
end;
end;
不幸的是運行此程序時,它仍然顯著閃爍。
這裏是我的問題: 有什麼辦法可以使動畫平滑(沒有任何閃爍)?
編輯: 爲了使動畫更加流暢,改變50的東西在睡眠(50)更小,並刪除這一行:
if(x mod 7 = 1) then begin
如此強大的財產。謝謝,我會在10分鐘後以接受的方式打勾 –
是的,但一個財產很容易導致令人討厭的視覺怪癖。 –
@DavidHeffernan絕對是不錯的選擇,如果你可以在沒有使用雙緩衝的情況下找到重繪閃爍的方法,那麼試着去做。從我自己的經驗,並如大衛指出,雙緩衝往往導致一些視覺問題,如按鈕周圍的黑邊等。 – 2012-12-07 19:49:01