![]() |
[Andorra2D] TSprite.Image mit eigenem Bitmap
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:
Ich sehe aber nichts auf der Spielfläche.
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 Weise ich dagegen TempSprite.Image irgendein Image aus der globalen ImageList zu, funktionierts und das Sprite wird auf der Spielfläche gezeichnet.
Delphi-Quellcode:
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. :gruebel:
TempSprite := TAnimationSprite.Create(Parent, FDraw);
TempSprite.X := X; TempSprite.Y := Y; TempSprite.Z := Z; TempSprite.Image := FImageList[0]; // geht |
AW: [Andorra2D] TSprite.Image mit eigenem Bitmap
Ich kenne Andorra (noch) nicht, könnte dieser Link helfen ?
![]() |
AW: [Andorra2D] TSprite.Image mit eigenem Bitmap
Danke für den Wink mit dem Zaunspfahl. ;) Hat nicht direkt geholfen, aber ich hab mal testweise versucht, meiner ImageList dynamisch ein Bild anzuhängen:
Delphi-Quellcode:
Und das funktioniert wieder.
Bmp.SaveToFile('C:\Temp\TestBitmap.bmp');
with FImageList.Add('TestBitmap') do begin Texture.LoadGraphicFromFile('C:\Temp\TestBitmap.bmp', FALSE, clNone); Restore; end; I := FImageList.Count - 1; TempSprite := TAnimationSprite.Create(Parent, FDraw); TempSprite.X := X; TempSprite.Y := Y; TempSprite.Z := Z; TempSprite.Image := FImageList[I] Hab dann mal tiefer gesucht und mir die Funktionen angeschaut. Dabei festgestellt, dass in TAdImage.Texture.LoadGraphicFromFile die Textur über einen Umweg per TAdBmp -> TAdImage.Texture.Texture.LoadFromBitmap(TAdBmp) geladen wird. Dann das mal bei mir ausprobiert und es geht auch ... Keine Ahnung, wieso und warum das vorher nicht geklappt hat, wenn's auch die DynTexture-Demo genauso macht. :gruebel:
Delphi-Quellcode:
AdImage := TAdImage.Create(FDraw);
AdBmp := TAdBitmap.Create; try AdBmp.Assign(Bmp); AdImage.Texture.Texture.LoadFromBitmap(AdBmp, ad32Bit); AdImage.Restore; finally FreeAndNil(AdBmp); end; TempSprite := TAnimationSprite.Create(Parent, FDraw); TempSprite.X := X; TempSprite.Y := Y; TempSprite.Z := Z; TempSprite.Image := AdImage; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz