TBITMap to PNG?

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ich ich dachte wenn von Alpha Kanal geredet wird, ist Transparent.
Intern in der Procedure Sollten natürlich TBItMap verwendet werden bzw. Es soll erst per TCanvasOPBitmap; das Rechteckgezeichnet werden und davor natürlich der Hintergrund, ich hoffe du verstehst wie ich das meine !
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Die Transparenz eines TBitmap ist immer ein volle Durchsichtigkeit.
Diese wird mittels einer Farbe pro Bitmap oder einer Maske festgelegt.

Mit Alpha Kanälen bei 32bit Bitmaps kannst du eine Semi-Transparenz (Halb-Durchsichtigkeit) erreichen. Dabei kann jedes Pixel eine andere "Durchsichtigkeit" haben.

Das OpBitmap.SetAlpha(Value) ist dabei nur eine Hilfe um den Alphakanal jedes Pixels zu verändern.
Wenn das Bitmap eine Transparenzfarbe gesetzt hat, werden bei dieser Methode nur die Alpha Werte der Transparenzfarben verändert.
Falls nicht, werden die Alphas des ganzen OpBitmap verändert.

Du kannst auch selber bestimmen, welche Pixel wie "semi-transparent" seien sollen. Dazu musst du das OPBitmap in ein Pixelformat:=pf32bit umwandlen und danach auf ein 32Bit Bitmap typecasten:

var Pix: PPixel32;
pix := @TBitmapData32(fLazPic.Bitmap.Data).NativePixels[X,Y];
pix^.Alpha := Value;

Alles klar?
Zuletzt geändert von theo am Mo 24. Sep 2007, 13:48, insgesamt 1-mal geändert.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

erden bei dieser Methode nur die Alpha Werte der Transparenzfarben verändert.
Falls nicht, werden die Alphas des ganzen OpBitmap verändert.
Sollte das nicht umerkerht sein ?

so in etwa..... aber ich sehe noch kein Praktischen nutzen.....
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

pluto hat geschrieben: Sollte das nicht umerkerht sein ?
Wieso?

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

naja die Trazparent Farbe sollte bei einer Grafik nicht angezeigt werden z.b. bei TBitmap ist das ja so wenn dort Trazparent Farbe benutzt werden soll.

darum.... dann wird die Farbe normalerweise nicht angezeigt.
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Ja, das ist auch so. Ich rede aber von AlphaBlending.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Dann verstehe ich noch nicht den unterschied zu AlphaBlending. nicht.
Bisher dachte ich das da einfach zwei Grafiken übereinander gelegt wird. In Irgendeiner Form.
MFG
Michael Springwald

Antworten