Entwickler-Ecke

Multimedia / Grafik - DX Hintergrundbild behalten


neo - Di 17.06.03 17:23
Titel: DX Hintergrundbild behalten
Hallo!

Ich habe in bei Dx ein Bild als Hintergrund geladen.


Quelltext
1:
DXDraw1.Surface.LoadFromFile('back.bmp');                    


Dann gebe ich ein Bild dazu und drehe es zum Beispiel.
Dann wird das Bild immer neu gedreht gezeichnet, und die alten alle stehengelassen.

Ich möchte aber nur den Hintergrund mit dem aktuellsten, d.h letzten gezeichneten Bild haben.

Danke!


Da_Knuddelbaer - Di 17.06.03 17:34

Wie genau zeichnest du denn das andere Bild bzw. wie zeichnest du überhaupt?

Greetz,
knuddelbaer


neo - Di 17.06.03 17:37
Titel: RE:
Ich zeichne es mit


Quelltext
1:
DXImageList1.Items[0].DrawRotate(DXDraw1.Surface,100,100,182,256,0,0.5,0.5,Angle)                    


maximus - Di 17.06.03 18:16

Du solltest den backBuffer flippen :wink:

DXDraw.flip(..?) oder so (im gameLoop)

sollte helfen?...


neo - Di 17.06.03 18:29
Titel: RE:
Der Backbuffer ist gleub ich nur für 3D

oder?


mimi - Di 17.06.03 22:05

also du solltes eine imageliste verwenden delphiX hat eine dabei:)
im dxTimer schreibst du dann folgends:
DxDraw1.Clear; // löscht alles
..... // weiter zeichen anweisungen
DxDraw1.Flip;

DxTimer1.interval:=0 muss du noch im oi einstellen:)


neo - Di 17.06.03 22:50
Titel: RE:
Danke für die Hilfe aber ich habe bei mir keine Funktion "clear" dabei.

Ich möchte ja eigentlich nur einen Hintergrund hineinladen, und auf diesem nachher alle zeichen Sachen durchführen.

Neo


Elayla - Mi 18.06.03 06:43

Ich hab bei meiner Zeichenprozedur auch kein Clear verwendet, der überschreibt das doch so und so :)


Da_Knuddelbaer - Mi 18.06.03 09:22

Wenn es hier nur um ein Hintergrundbild geht dann kannst du das auch einfacher haben:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  { Hintergrund erstellen }
  with TBackgroundSprite.Create(SpriteEngine.Engine) do
  begin
    SetMapSize(MapSize, MapSize);
    Image := ImageList.Items.Find('Background.bmp');
    Z := -6;                            // steht unter allen anderen Sprites
    Tile := True;
  end;


Die Klasse TBackgroundSprite ist durch DelphiX bereits gegeben, du musst also lediglich den obigen Code einfügen und es sollte klappen. Natürlich musst du noch die MapSize abändern und eventuell heisst die Bitmap (oder was auch immer) bei dir anders. Den Code aber nur einmal ausführen, also ja nicht in den DXTimer reinstopfen.

Greetz,
Knuddelbaer


maximus - Mi 18.06.03 10:13

Flippen musst du so oder so...clearen nur wenn der hintergrung nicht alles ausfüllt.


mimi - Mi 18.06.03 17:18

mein fehler, war gestern wohl bei einer änlichen komponenten samlung wie dx:)
bei dx heißt das:
DXDraw1.Surface.Fill(0) ;)