Einzelnen Beitrag anzeigen

nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

[Andorra2D] TSprite.Image mit eigenem Bitmap

  Alt 25. Sep 2012, 21:26
Hallo!

Ich probiere hier schon seit gut 'ner Stunde rum, in einem per Event erzeugten Sprite ein eigenes Bitmap zuzuweisen, was aber überhaupt nicht klappen will ...

Delphi-Quellcode:
Z := FAttachedSprite.Z + 1;
FTargetX := AX;
FTargetY := AY;
FSpeed := ASpeed;
W := Round(Abs(FTargetX - X));
H := Round(Abs(FTargetY - Y));
Bmp := TBitmap.Create;
try
  Bmp.PixelFormat := pf32Bit;
  Bmp.Width := W;
  Bmp.Height := H;
  with Bmp.Canvas do
    begin
      Brush.Color := clYellow;
      FillRect(ClipRect);
      Pen.Color := clBlue;
      Pen.Width := 4;

      if FTargetX < X then
        begin
          StartX := Bmp.Width;
          EndX := 0;
        end
      else
        begin
          StartX := 0;
          EndX := Bmp.Width;
        end;
      
      if FTargetY < Y then
        begin
          StartY := Bmp.Height;
          EndY := 0;
        end
      else
        begin
          StartY := 0;
          EndY := Bmp.Height;
        end;

      MoveTo(StartX, StartY);
      LineTo(EndX, EndY);
    end;

  // Alternativ Bmp mit irgendeinem Bild laden
  // Bmp.LoadFromFile('C:\Temp\Test1.bmp');

  TempSprite := TAnimationSprite.Create(Parent, FDraw);
  TempSprite.X := X;
  TempSprite.Y := Y;
  TempSprite.Z := Z;
  TempSprite.Image := TAdImage.Create(FDraw);
  TempSprite.Image.Texture.LoadFromGraphic(Bmp);
  TempSprite.Image.Restore; // geht nicht
Ich sehe aber nichts auf der Spielfläche.

Weise ich dagegen TempSprite.Image irgendein Image aus der globalen ImageList zu, funktionierts und das Sprite wird auf der Spielfläche gezeichnet.
Delphi-Quellcode:
  TempSprite := TAnimationSprite.Create(Parent, FDraw);
  TempSprite.X := X;
  TempSprite.Y := Y;
  TempSprite.Z := Z;
  TempSprite.Image := FImageList[0]; // geht
Warum? Ich vermute, ich habe irgendwas bei der Initialisierung vergessen oder falsch gemacht. Ich kann aber nichts erkennen, vorallem weil's in der DynTexture-Demo ja auch so gemacht wird.
  Mit Zitat antworten Zitat