Ich hab mal wieder ein bisschen an OpBitmap geschraubt.
Ich denke ich habe endlich herausgefunden, wie ich auf GTK2 Canvases alphatransparent zeichen kann.
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
GTK2 alphatransparentes Zeichnen
-
- 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
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 ?
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
Michael Springwald
Re: GTK2 alphatransparentes Zeichnen
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.
-
- 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
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
Michael Springwald
Re: GTK2 alphatransparentes Zeichnen
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
-
- 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
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
Michael Springwald