Entwickler-Ecke

Multimedia / Grafik - delphix refresh


Spurius - Mi 05.11.03 16:46
Titel: delphix refresh
hallo, ich bin absoluter neuling mit delphix und hab folgende frage:
in diesem code

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var
  Form1: TForm1;
  x,y:integer;
implementation

{$R *.dfm}

procedure TForm1.DXDraw1Click(Sender: TObject);
begin

 x := x+5;
 y := y+5;

 dximagelist1.Items[0].Draw(dxdraw1.Surface,x,y,0);
 dxdraw1.Flip;
end;

bringe ich ein bild auf den bildschirm, dass sich bei clicks verschieben soll. es verschiebt sich auch, aber die alten bilder bleiben bestehen. Wie kann ich machen, dass nur das aktuelle bild angezeigt wird?

MfG
Spurius

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.


mimi - Mi 05.11.03 18:50

du brauchst einen DXTimer um das bild jede 0 ms zu akualliesieren. dazu stellt du den timer einfach auf interval 0 und gut. gezeichnett sollte nur in der ONDXTimer ereignis für dein problem:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var
  isCilick:Bool = False;
  mausPos:TPointer

onKlick
isClick:=not isClick
MausPos.x:=x;
MausPos.Y:=y;
onTimer:
x := x+5; 
y := y+5; 

dximagelist1.Items[0].Draw(dxdraw1.Surface,x,y,0); 
dxdraw1.Flip;

soll sich die bildbposition immer verschieben oder immer gleichbleiben wenn man geklick hat ?


Spurius - Mi 05.11.03 19:06

Hallo,

also das bold soll bei jedem klicj verschobe werden. bis jetzt hab ich folgenden code;

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.DXDraw1Click(Sender: TObject);
begin
 x:= x+5;
 y:= y+5;
end;

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin

 dximagelist1.Items[0].Draw(dxdraw1.Surface,x,y,0);
 dxdraw1.Flip;
end;

end.

aber die alten bilder sind immer noch da.

MfG
Spurius

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.


mimi - Mi 05.11.03 19:11

du musst bevor du seichnes den surface wieder löschen: (ich habe schon lange nicht mehr mit delphiX gearbeitet)

Delphi-Quelltext
1:
DXDraw1.Surface.Fill(0);                    

schau mal in dieses tutor von mir:
http://www.delphi-forum.de/viewtopic.php?t=10073
dort wird beschrieben wie man ein Snake baut.