Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - In einem Image alle Weiß-Bereiche transparent machen


stefanstp - Do 21.11.02 12:06
Titel: In einem Image alle Weiß-Bereiche transparent machen
Ich möchte ein Image auf meiner Form legen und zwar soll dies ein schöner Rahmen sein. Alle Bereiche die weiß sind, sollen transparent sein. In der Image-Componente gibt es dafür auch die Funktion "Transparent".
Wenn ich die auf "True" setze, passiert so gut wie gar nichts, nur ein paar Pixel die weiß sind, werden transparent gemacht, aber eben nicht alles.

Woran kann dies liegen? Wie schaffe ich es, das wirklich alle weiß-Bereiche verschwinden?

Wer kann helfen?

Danke im Voraus

STEFAN


Alfons-G - Do 21.11.02 13:09

Hi,

die Eigenschaft transparent macht den Hintergrund des Bildes transparent. Wenn die restlichen weissen Flächen Deiner Bitmap nicht auf dem Hintergrund liegen, werden sie nicht berücksichtigt.

Du musst also den Rahmen im Zeichenprogramm nochmal nachbearbeiten und alle durchsichtigen Bereiche mit der Hintergrundfarbe nachmalen, bzw. das Vordergrung-Weiss mit dem Radiergumme löschen.

:idea:


stefanstp - Do 21.11.02 13:19
Titel: Nachfrage...
Irgendwie habe ich das leider noch nicht ganz verstanden.

Ich habe einen Rahmen. Der ist sagen wir mal scharz. Da der Rund ist, ist alles außen weiß (als Photoshopdatei transparent ==> wird ja beim umwandeln in weiß konvertiert).

Jetzt macht er aber halt das Weiß nicht transparent. Bei Icons klappt das komischerweise immer super. Da hatte ich nie Probleme.

Oder heißt das, das ich den schwarzen Rahmen innen komplett schwarz machen muß, und somit die meiste Fläche schwarz ist und der rest der weiß ist, automatisch der Hintergrund ist, und Delphi dann erkennt, das diese Fläche transparent zu machen ist???

Hm???


a - Do 21.11.02 14:43

Standardmäßig richtet sich die transparente Farbe nach der Farbe des Pixel in der unteren, linken Ecke.

Um das zu ändern, musst Du einfach folgenden Code in das FormCreate Ereignis packen:

Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Image1.Picture.Bitmap.TransparentMode := tmFixed;
  Image1.Picture.Bitmap.TransparentColor := clWhite;
  Image1.Picture.Bitmap.Transparent := True;
end;


stefanstp - Do 21.11.02 14:55
Titel: Besten Dank
...werde ich doch gleich mal ausprobieren.

STEFAN