Autor Beitrag
-MaLo-
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 01.03.05 14:47 
Hi

Ich habe hier ein STapel Images, die ich über mein Form bewege. Wie man sich vorstellen kann sieht das extrem Müll aus, da bei jeder Änderung neu gezeichnet wird.

Gibts ne Möglichkeit das abzustellen?

MFG
MaLo
Harry Hunt
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 50



BeitragVerfasst: Di 01.03.05 14:54 
Soweit ich weiß kann man das nicht abschalten.
Statt mit TImages zu arbeiten solltest du lieber auf den Canvas deines Formulars oder den einer TPaintBox zeichnen. Damit lässt sich das flickern verhindern.
-MaLo- Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 01.03.05 18:42 
Hi.

Das sind Images die ich auf einem Formular bewegen will, keine Malereien da rein
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Di 01.03.05 19:00 
-MaLo- hat folgendes geschrieben:
Hi.

Das sind Images die ich auf einem Formular bewegen will, keine Malereien da rein
Harry hat dir schon den richtigen Tip gegeben. Du musst die Bewegung intern auf ein Bitmap zeichnen, also jedesmal neu berechnen und dann auf eine PaintBox kopieren. Wenn es dann trotzdem noch flackert, hilft nichts anderes als DirectX oder OpenGL.

Gruß Hape!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
-MaLo- Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 01.03.05 19:06 
Ok Danke

(Soweit sind wir aber in der Progger AG noch ned... leider)

MFG
MaLo
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Di 01.03.05 19:35 
Hallo Malo,

ist im Prinzip nicht so schwer und leicht zu erlernen. Zeig doch mal einen kleinen Ausschnitt aus deinem Quelltext der für die Bewegung zuständig ist. Ich kann dir dann zeigen, wie du dass im einzelnen machst.

Aber est morgen, weil ich jetzt erstmal ausruhen muss! ;)

Gruß Hape!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
-MaLo- Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 01.03.05 19:44 
hehe...

Das nicht-wissen wäre kein Problem. Ich bin ja co-leiter der ag. Und aus alten VB Tagen (bääääääääääh) kannte ich noch die Form.Eighenschaft AutoRedraw, die ich bei Delphi vermisst habe. Und das Project um das es geht ist eine Art Mini-Moorhuhn für Demozwecke (Random() und Timereien). Nur mir geht halt das Geflacker auf die Nerven, und bis ich nu den armen Unwissenden (und mir erstmal) die sachen für DX oder Opengl angeschaut habe.... Zumal wir ja vorbereitenn wollen auf die Oberstufe, nicht Spieleprogrammierung durchnehmen.

Is nett gemeint von dir, danke. Aber brauchen wir leider ned.

Mfg
malo
Harry Hunt
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 50



BeitragVerfasst: Di 01.03.05 20:32 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
var
  Sprite: TBitmap;
  Buffer: TBitmap;
  BildX, BildY: Integer;
begin
 // Diesen Teil würdest du z.B. bei OnCreate machen
  Sprite := TBitmap.Create;
  Sprite.LoadFromFile('C:\MeinBild.bmp');

  Buffer := TBitmap.Create;
  Buffer.Width := Form1.ClientWidth;
  Buffer.Height := Form1.ClientHeight;

  // Diesen Teil würdest du z.B. in einem Timer machen
  with Buffer.Canvas do
  begin
    Pen.Color := clBtnFace;
    Brush.Color := Pen.Color;
    Rectangle(ClipRect);
    Draw(BildX, BildY, Sprite);
    Inc(BildX);
    Inc(BildY);
  end;
  Form1.Canvas.Draw(0, 0, Buffer);

  // Diesen Teil würdest du bei OnDestroy deines Forms machen
  Buffer.Free;
  Sprite.Free;
end;