TBitmap and transparency lazarus / 39-Graphics ---------------------------------------------------------------------- Valdas · 2007-03-13 23:28 I'm working on kUbuntu 6.10 with Lazarus 0.9.21 (latest svn).  I want draw dynamically painted TBitmap with transparency, but i get picture without transparency.  Transparency with loaded bitmaps worked OK.  What i doing wrong? Or maybe this problem exist only under Linux?  Code is bellow. On left form side is drawn dynamically painted bitmap, on right side- for comparison is drawn same bitmap, but previously saved and then loaded. Code: [Select] unit Unit1; {$mode objfpc}{$H+} interface uses   Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,   ExtCtrls; type   { TForm1 }   TForm1 = class(TForm)   private     FDrobe: TBitmap;     FUzkrautas: TBitmap;     procedure FormDestroy(Sender: TObject);     procedure FormPaint(Sender: TObject);   public     constructor Create(AOwner: TComponent); override;   end; var   Form1: TForm1; implementation { TForm1 } constructor TForm1.Create(AOwner: TComponent); const   FAILAS='testas.bmp'; begin     inherited Create(AOwner);     //     FDrobe:=TBitmap.Create;     FDrobe.Width:=50;     FDrobe.Height:=50;     //     FDrobe.Canvas.Brush.Color:=clYellow;     FDrobe.Canvas.FillRect(Rect(0, 0, FDrobe.Width, FDrobe.Height));     //     FDrobe.Canvas.Brush.Color:=clRed;     FDrobe.Canvas.FillRect(Rect(0, FDrobe.Height div 2, FDrobe.Width div 2, FDrobe.Height));     //     FDrobe.Transparent:=True;     FDrobe.TransparentColor:=FDrobe.Canvas.Pixels[0, 0];     //     FDrobe.SaveToFile(FAILAS);     //     if (FileExists(FAILAS)) then      begin         FUzkrautas:=TBitmap.Create;         FUzkrautas.LoadFromFile(FAILAS);         //         FUzkrautas.Transparent:=True;         FUzkrautas.TransparentColor:=FUzkrautas.Canvas.Pixels[0, 0];      end;     //     OnDestroy:=@FormDestroy;     OnPaint:=@FormPaint; end; procedure TForm1.FormDestroy(Sender: TObject); begin     if (Assigned(FUzkrautas)) then FreeAndNil(FUzkrautas);     if (Assigned(FDrobe)) then FreeAndNil(FDrobe); end; procedure TForm1.FormPaint(Sender: TObject); begin     if (Assigned(FDrobe)) then Canvas.Draw(10, 10, FDrobe);     if (Assigned(FUzkrautas)) then Canvas.Draw(70, 10, FUzkrautas); end; initialization   //{$I unit1.lrs} end. ---------------------------------------------------------------------- VictorZhang · 2007-03-15 17:29 It seems that TBitmap.SetTransparentMode not implemented yet... The TransparentColor don't work! ---------------------------------------------------------------------- theo · 2007-03-15 17:56 memstream := TMemoryStream.create;   try     bmp.SaveToStream(memstream);     memstream.position := 0;     bmp.LoadFromStream(memstream);   finally     memstream.free;   end; See: http://wiki.lazarus.freepascal.org/Developing_with_Graphics#Drawi ng_color_transparent_bitmaps