![]() |
Zwei GIFs vereinen
Hallo!
Ich habe zwei TImages übereinander. Im hinteren ist eine Landkarte zu sehen und im vorderen sind bestimmte Regionen markiert. Bei beiden Bildern handelt es sich um GIF-Bilder. Das vordere Bild transparent (GIF-Transparenz). Ich würde jetzt gerne ein vollständies Bild abspeichern (egal ob BMP oder GIF, GIF wäre aber am besten). Dazu habe ich mittels der Suche von ![]()
Delphi-Quellcode:
Wäre nett wenn mir wer helfen könnte.
procedure TMainForm.VollstndigeGrafikspeichern1Click(Sender: TObject);
var Dest: TPicture; // Hier habe ich mal ein temporäres Image angelegt begin if SaveFull.Execute then begin Dest := TPicture.Create; Dest.Bitmap := Image2.Picture.Bitmap; // Ich VERSUCHE in das Temporäre // Image das hintere Bild zu laden TransparentBlt( Dest.Bitmap.Handle, // Hier muss ich das Destination Handle angeben 0, // X-Koord 0, // Y 320, // Width 240, // Height Image1.Picture.Bitmap.Handle, // Und hier das Source Handle 0, // Wieder X 0, // und Y 320, // und Width 240, // sowie Height clNone // Hier sollte die Transparente Farbe stehen, aber wie // lautet die, wenn ich die GIF-Transparenz benutze? ); Dest.SaveToFile(SaveFull.FileName); end; end; Grüße Faux |
Re: Zwei GIFs vereinen
Die Hintergrundfarbe, des vorderer Bildes (Regionen).
|
Re: Zwei GIFs vereinen
Delphi-Quellcode:
procedure BmpBlend(Source, Dest, New: TBitmap; const BlendFacktor: Byte = 50);
var pat, paf, pan: PByteArray; x, y: Integer; begin if Source.PixelFormat <> pf24bit then Source.PixelFormat := pf24bit; if Dest.PixelFormat <> pf24bit then Dest.PixelFormat := pf24bit; if New.PixelFormat <> pf24bit then New.PixelFormat := pf24bit; for y := 0 to Dest.Height - 1 do begin pat := Dest.ScanLine[y]; paf := Source.ScanLine[y]; pan := New.ScanLine[y]; for x := 0 to (Dest.Width * 3) - 1 do pan^[x]:= round(paf^[x] - ((paf^[x] - pat^[x]) / 100 * BlendFacktor)); end; end;
Delphi-Quellcode:
Oder so, wenn es dir nur ums Blenden geht.
procedure TFormX.ButtonXClick...
begin BmpBlend( Image1.Picture.Bitmap, Image2.Picture.Bitmap, Image1.Picture.Bitmap, 20); Image1.Invalidate; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:11 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-2025 by Thomas Breitkreuz