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

请问如何去除panel移动的拖尾?

答題得分者是:pedro
rainxie
一般會員


發表:20
回覆:27
積分:14
註冊:2008-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-07-15 09:45:52 IP:116.226.xxx.xxx 訂閱
不好意思,又有个问题,我用timer来控制panel的移动,当每次移动的距离大于一个像素时,会有拖尾,
以下是我的代码,请问如何去除拖尾呢?我看游戏里物体的移动很自然

期待您的解惑!谢谢!

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
panel1.Left:=panel1.Left 5;
panel1.Top:=panel1.Top 4;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.DoubleBuffered:=true;
end;
end.

pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-07-16 11:40:14 IP:60.248.xxx.xxx 未訂閱
要移動可視元件不閃爍辦法是有的,不過不像遊戲畫面那麼流暢
最主要是要用雙衝緩衝區double buffer page flip,那做起來有點複雜

講點簡單的,試試下列程式碼看看
type
TForm1 = class(TForm)
Timer1: TTimer;
Panel1: TPanel;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure StopFlicker(var Msg: TWMEraseBkgnd); message WM_ERASEBKGND;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
panel1.Left:=panel1.Left 5;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered:=True;
self.ControlStyle:=ControlStyle [csOpaque];
end;
procedure TForm1.StopFlicker(var Msg: TWMEraseBkgnd);
begin
Msg.Result := 1;
end;

進一步參考資料
http://delphi.about.com/library/bluc/text/uc052102g.htm
rainxie
一般會員


發表:20
回覆:27
積分:14
註冊:2008-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-07-16 13:16:15 IP:116.226.xxx.xxx 訂閱
谢谢您的回复,好像有点效果,不是太好,呵呵呵

请问您有双重缓冲区的相关资料吗?谢谢您!
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-07-16 13:50:16 IP:60.248.xxx.xxx 未訂閱
以delphi DoubleBuffer sprites字眼去問搜尋,應該會有一堆資料可參考
http://www.delphiforfun.org/Programs/Delphi_Techniques/animation.htm

或者去翻翻2D遊戲設計的書,大都會提到
rainxie
一般會員


發表:20
回覆:27
積分:14
註冊:2008-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-07-16 14:20:01 IP:116.226.xxx.xxx 訂閱
非常感谢您!我去看看
系統時間:2024-03-29 15:29:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!