AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi gr32 | Eine Farbe als Transparent markieren
Thema durchsuchen
Ansicht
Themen-Optionen

gr32 | Eine Farbe als Transparent markieren

Ein Thema von halinchen · begonnen am 23. Jul 2007 · letzter Beitrag vom 23. Jul 2007
 
Benutzerbild von halinchen
halinchen

Registriert seit: 13. Jun 2006
508 Beiträge
 
Delphi 2007 Professional
 
#1

gr32 | Eine Farbe als Transparent markieren

  Alt 23. Jul 2007, 09:56
Hi!

Ich habe ein Bitmap was als *.bmp Datei vorliegt.
Ich möchte das Bitmap auf ein TBitmap32-Objekt kopieren und die Farbe clFuchsia soll Transparent sein. (Also der Hintergrund, denn ich eher zeichne soll durchgucken).

Von hier habe ich mir die Procedure abgeändert:

Ich habe turboPASCALs Demo so abgeändert, das es statt einem PNG-Image eine Bitmap einlist und die 1. Farbe als Transparenzfarbe nimmt. Wenn die 1. Farbe schwarz war gings. Wenn die was anderes war gings nicht. (Wenn es schwarz war hat es den Pixel auf $0 gesetzt. Wenn ich ihn bei mir auf $0 setze, zeichnet es auf meinen Hintergrund das Bild und die Transparentsfarbe ersetzt es durch schwarz.)

Delphi-Quellcode:
procedure TfrmMain.SetTransparent(DstBitmap: TBitmap32;TransparentColor: TColor32);
var
  PixelPtr: PColor32;
  X, Y: Integer;
begin
  DstBitmap.ResetAlpha;

  TransparentColor := TransparentColor;
  PixelPtr := PColor32(@DstBitmap.Bits[0]);
  for X := 0 to (DstBitmap.Height - 1) * (DstBitmap.Width - 1) do
  begin
    if PixelPtr^ = TransparentColor then
      PixelPtr^ := PixelPtr^ and $00FFFFFF;
    Inc(PixelPtr);
  end;

end;

procedure TfrmMain.MenuDraw;
var
  temp32: TBitmap32;
  temp : TBitmap;

  PixelPtr : PColor32;
  x,y:integer;
begin
 temp := TBitmap.Create;
 try
  temp32 := TBitmap32.Create;
  try
    temp32.Assign(bmpBackground);
    bmpMenu.Draw(0,0,temp32); //bmpMenu = TBitmap32
    imgBtn.GetBitmap(0,temp); //ImageList
    temp32.Assign(temp);
    SetTransparent(temp32,Color32(clFuchsia));
    bmpMenu.Draw(100,100,temp32);
  finally
    temp32.Free;
  end;
 finally
  temp.Free;
 end;
end;
edit: Bitte Beachtet, bei turboPASCALs Demo ging es mit schwarz und bei mir geht es gar nicht!
Angehängte Grafiken
Dateityp: jpg bild1_138.jpg (11,2 KB, 25x aufgerufen)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz