2007. március 31., szombat
Setting the invisible color of a transparent image
Problem/Question/Abstract:
How can I set the invisible color of a transparent image to other than the pixel in the lower-left corner?
Answer:
Transparent image
The TImage component has a Transparent property that when set to True displays the bitmap of the Picture property transparently. To do this, it takes the color of the bottom-leftmost pixel and treates all pixels of this color as invisible (you can see the objects begind the TImage). For example, this bitmap...
GGGGGGGGG
GRRRRRRRG
GRRRRRRRG
GRRRRRRRG
GGGGGGGGG
...would be seen this way:
RRRRRRR
RRRRRRR
RRRRRRR
Since the pixel of the lower-left corner is green (G), all green pixels are made invisible. But, what if we wanted to see the image this way?
GGGGGGGGG
G G
G G
G G
GGGGGGGGG
TransparentColor and TransparentMode
To achieve this result, we have to set the TransparentColor and TransparentMode properties of the bitmap at run-time, for example when the form is created:
procedure TForm1.FormCreate(Sender: TObject);
begin
with Image1.Picture.Bitmap do
begin
TransparentColor := clMaroon;
TransparentMode := tmFixed;
end;
end;
TransparentColor is the color (Color) that will be considered invisible. For example, we can use a constant (like $00800000, clMaroon or clBtnFace) or we can get the color from some pixel of the bitmap (like Canvas.Pixels[1,1]). TransparentMode is tmAuto by default, meaning it takes the color of the pixel in the lower-left
corner, and we have to set it to tmFixed (the other possible value) to tell the bitmap to use the color stored in the TransparentColor property as the invisible color.
Copyright (c) 2001 Ernesto De Spirito
Visit: http://www.latiumsoftware.com/delphi-newsletter.php
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése