TImage toma el color del pixel inferior izquierdo de una imagen como el color transparente cuando Transparent es verdadero, pero puede usar las propiedades TransparentColor y TransparentMode para especificar el color invisible

Estableciendo el color invisible de una imagen transparente

Copyright © 2000 Ernesto De Spirito

LMD-Tools 6.1 - 300+ componentes para varias tareas de desarrollo!

Imagen transparente

El componente TImage tiene una propiedad Transparent que al ser establecida en True muestra el mapa de bits de la propiedad Picture en forma transparente. Para hacer esto, toma el color del píxel que está más abajo a la izquierda y trata todos los píxeles de ese color como invisibles (se pueden ver los objetos detrás de la imagen).

Por ejemplo, esta imagen...

...se vería de esta manera:

Dado que el píxel de la esquina inferior izquierda es verde, todos los píxeles verdes se hacen invisibles. Pero, ¿cómo haríamos para ver la imagen de esta manera?

TransparentColor y TransparentMode

Para lograr ese resultado, debemos establecer las propiedades TransparentColor y TransparentMode del mapa de bits en tiempo de ejecución, por ejemplo cuando se crea el formulario:

procedure TForm1.FormCreate(Sender: TObject);
begin
  with Image1.Picture.Bitmap do begin
    TransparentColor := clMaroon;
    TransparentMode := tmFixed;
  end;
end;

TransparentColor es el color (TColor) que será considerado invisible. Por ejemplo, podemos usar una constante (como $00800000, clMaroon o clBtnFace) o podemos obtener el color de algún píxel del mapa de bits (como Canvas.Pixels[1,1]).

TransparentMode tiene el valor tmAuto como predeterminado, significando que se toma el color del píxel de la esquina inferior izquierda, y tendremos que establecerla a tmFixed (el otro valor posible) para indicarle que use el color guardado en la propiedad TransparentColor como el color invisible.

JfControls Library - para Delphi y C++ Builder