GTK2 alphatransparentes Zeichnen

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

GTK2 alphatransparentes Zeichnen

Beitrag von theo »

Ich hab mal wieder ein bisschen an OpBitmap geschraubt.
Ich denke ich habe endlich herausgefunden, wie ich auf GTK2 Canvases alphatransparent zeichen kann. :P
Die LCL kann das im Moment leider noch nicht.

Für Linux kompilierte Demo hier: http://www.theo.ch/lazarus/compileddemo.zip
Das Bild (Dragon.png) stammt von hier: http://bugs.freepascal.org/view.php?id=13266

Was ihr seht ist ein OpBitmap, welches auf einen TForm.Canvas alphatransparent gezeichnet wird
Zum Beweis wechselt die Farbe der TForm, also: Form1.Color:=clyellow / Form1.Color:=clgreen.
Rotation und Resampling finden in OpBitmap statt.

OpBitmap gibt's wie immer hier: http://www.theo.ch/lazarus/opbitmap64.zip
Den experimentellen Code für GTK2 hier: http://www.theo.ch/lazarus/alphagtk2.zip

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

Re: GTK2 alphatransparentes Zeichnen

Beitrag von pluto »

Ich dachte das eine nennt sich "Alpha-Kanal" also ein Wert mit den ich einstellen kann wie viel "Transparent ich haben möchte und das andere "Transparent" zeichnet alles in der angebende Farbe "über".

Was genau kann ich mir unter "alphatransparent" vorstellen ? Auf dem Bild sehe ich nichts "ungewöhnliches".... wäre das nicht auch mit "Blending(also mit Alpha-Kanal") möglich ?

PS: Ich weiß zwar nicht genau was "alphatransparent" ist, aber hast du dir mal "AggCanvas" angeschaut ?
MFG
Michael Springwald

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

Re: GTK2 alphatransparentes Zeichnen

Beitrag von theo »

pluto hat geschrieben:Ich dachte das eine nennt sich "Alpha-Kanal" also ein Wert mit den ich einstellen kann wie viel "Transparent ich haben möchte und das andere "Transparent" zeichnet alles in der angebende Farbe "über".

Was genau kann ich mir unter "alphatransparent" vorstellen ? Auf dem Bild sehe ich nichts "ungewöhnliches".... wäre das nicht auch mit "Blending(also mit Alpha-Kanal") möglich ?


Das ist schon so gemeint. Also zeichnen mit Alpha-Kanal.
Nur geht das zur Zeit mit der LCL GTK2 noch nicht. D.h. die LCL macht das Bild einfach mit Maske transparent.
Probier's mal mit diesem Bild: http://bugs.freepascal.org/file_downloa ... 7&type=bug

Code: Alles auswählen

procedure TForm1.FormPaint(Sender:TObject);
var bmp:TPortableNetworkGraphic;
begin
bmp:=TPortableNetworkGraphic.Create;
bmp.LoadFromFile('Dragon.png');
Canvas.Draw(2,2,bmp);
bmp.free;
end;


Mit OpBitmap geht's aber, wie du in der Demo siehst.

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

Re: GTK2 alphatransparentes Zeichnen

Beitrag von pluto »

Ging das nicht schon mit Vierecken vorher ? Aber Toll das du immer noch "opBitmap" weiter entwickelst... Ich habe einige Zeitlang nur TPicture genutzt, weil es einfacher ist, und weil ich da keine "Externen" Pfade setzten muss, aber es hat ja einige Probleme z.b. mit GIF Formate....
MFG
Michael Springwald

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

Re: GTK2 alphatransparentes Zeichnen

Beitrag von theo »

pluto hat geschrieben:und weil ich da keine "Externen" Pfade setzten muss, aber es hat ja einige Probleme z.b. mit GIF Formate....


Du musst ja keine Pfade setzten, nur das opbitmapforlazcompat package im Projektinspektor hinzufügen.
Es gibt übrigens kleine Verbesserungen. Siehe CHANGELOG.TXT
http://www.theo.ch/lazarus/opbitmap64.zip

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

Re: GTK2 alphatransparentes Zeichnen

Beitrag von pluto »

Du musst ja keine Pfade setzten, nur das opbitmapforlazcompat package im Projektinspektor hinzufügen.

Ist das gleiche, ob ich Pfade setzte oder ein package hinzufüge sofern es sich überhaupt Installieren lässt...
MFG
Michael Springwald

Antworten