BGRABitmap und einfache Zeichenfunktionen?

Rund um die LCL und andere Komponenten
Antworten
Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

BGRABitmap und einfache Zeichenfunktionen?

Beitrag von Timm Thaler »

Ich stelle gerade ein Programm von TBitmap auf TBGRABitmap um, da ich mit Alphamasken und Transparenz arbeiten muss und das Antialiasing ziemlich nice ist.

Bisher habe ich mit

Code: Alles auswählen

iHNDscrn.Canvas.Line(x1, y2, x2, y2);
auf das Canvas des Bildes gezeichnet.

Jetzt zeichne ich entweder mit

Code: Alles auswählen

iHNDscrn.CanvasBGRA.Line(x1, y2, x2, y2);
auf das Canvas des BGRA-Bildes. Oder mit

Code: Alles auswählen

iHNDscrn.RoundRect(x1, y1, x2, y2, 2 * crn, 2 * crn, rgbarand, rgbaback, dmSet);
direkt auf das Biild.

Das funktioniert soweit, aber:

Beim Zeichnen auf das Canvas funktionieren Transparenz(?) und Antialiasing nicht. Beim Zeichnen auf das Bild ohne Canvas funktionieren Line und Arc nicht. Nun habe ich DrawLine versucht, aber das zeichnet immer nur eine 1-Pixel breite Linie, anscheinend gibt es da keine Möglichkeit die Linienbreite zu ändern.

Ich suche einfache Zeichenfunktionen in BGRABitmap für Arc, Line, die Transparenz, Antialisaing und Linienbreite können. Das gibt es doch bestimmt, ich habe sie nur noch nicht gefunden. Die Linien könnte ich improvisieren, aber wichtig wären mir Bögen mit Startwinkel und Endwinkel.

Ich kenne das Tutorial https://wiki.freepascal.org/BGRABitmap_tutorial/de und die Beschreibung der Klasse https://wiki.freepascal.org/TBGRABitmap_class.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: BGRABitmap und einfache Zeichenfunktionen?

Beitrag von Winni »

Hi!

Bei der BGRAbitmap zeichnest Du nicht auf einen Canvas sondern direkt auf die Bitmap.

Es gibt z.B.

Code: Alles auswählen

var bmp: TBGRAbitmap;
...
bmp.FloodFill()
bmp.Arc() 
bmp.DrawPolygonAntialias()
bmp.RoundRectAntialias()
bmp.EllipseAntialias();



Die passende Datei ist bgraCustomBitmap.inc die Du Dir in Ruhe durchlesen solltest. Da bekommst Du eine leicht Ahnung, wie mächtig die BGRAbitmap ist.

Winni

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: BGRABitmap und einfache Zeichenfunktionen?

Beitrag von Timm Thaler »

Ah, es gibt ja doch ein direktes Arc. Danke.

Ich seh schon, ich werde auch meine Koordinaten von Integer auf Float umstellen, damit das Antialiasing besser funktioniert.

Gibt es noch eine ausführlichere Doku außer das Tutorial und Class-Description von oben und die bgracustombitmap.inc? Etwas das ich übersehen habe?

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: BGRABitmap und einfache Zeichenfunktionen?

Beitrag von Winni »

Hi!

Leider ist die Dokumentation von der BGRAbitmap recht dürftig.

Aber guck regelmäßig in den Code: Der ist dort gut dokumentiert und ab und zu findet man sogar Links auf hilfreiche Seiten.

Erster Schritt auf die Umstellung von TPoint auf TPointF:

Point(0,0) entspricht PointF (0.5,0.5)

Aber Du hast ja das Tutorial gelesen .....

Fragen beantworte ich gerne!

Winni

Benutzeravatar
Roland Chastain
Beiträge: 156
Registriert: Sa 7. Jul 2012, 21:50
Wohnort: Saargemünd
Kontaktdaten:

Re: BGRABitmap und einfache Zeichenfunktionen?

Beitrag von Roland Chastain »

Hallo!

Vor ein paar Jahren habe ich einen kleinen Artikel mit ganz einfachen Beispielen geschrieben. Der Artikel ist auf Französisch, aber die Beispiele sind selbsterklärend. Vielleicht helfen Ihnen diese kleinen Beispiele ein wenig weiter.

Öffnen Sie bitte das Dokument table.html, um eine visuelle Vorschau des Inhalts der Beispiele anzuzeigen.
Zuletzt geändert von Roland Chastain am Di 1. Mär 2022, 08:59, insgesamt 1-mal geändert.
Petit poisson deviendra grand,
Pourvu que Dieu lui prête vie.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: BGRABitmap und einfache Zeichenfunktionen?

Beitrag von Winni »

Hi!

Kurzeinführung auf deutsch:

https://wiki.freepascal.org/BGRABitmap/de


Im Interntionalen Forum hat die BGRAbitmap ihr eigenes Board. Dort werden auch viele Anfängerprobleme besprochen:

https://forum.lazarus.freepascal.org/in ... ,46.0.html

Winni

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: BGRABitmap und einfache Zeichenfunktionen?

Beitrag von Winni »

Roland Chastain hat geschrieben:
Sa 26. Feb 2022, 07:54
Hallo!

Vor ein paar Jahren habe ich einen kleinen Artikel mit ganz einfachen Beispielen geschrieben. Der Artikel ist auf Französisch, aber die Beispiele sind selbsterklärend. Vielleicht helfen Ihnen diese kleinen Beispiele ein wenig weiter.

Öffnen Sie bitte das Dokument table.html, um eine visuelle Vorschau des Inhalts der Beispiele anzuzeigen.
Hi!

Beim Auspacken der Zip-Datei bekomme ich folgende Fehlermeldung:

Archive: rchastain-initiation-bgrabitmap.zip
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.

Bitte eine heile Zip-Datei dort hinterlassen. Danke.

Winni

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: BGRABitmap und einfache Zeichenfunktionen?

Beitrag von wp_xyz »

Hier kein Problem, das zip zu öffnen (Win 11, PowerArchiver, aber auch mit dem eingebauten zip-Entpacker).

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: BGRABitmap und einfache Zeichenfunktionen?

Beitrag von Winni »

Sorry - Fehlermeldung retour.

FireFox legt eine Datei mit Null Byte an und meldet dann ein Sicherheitsrisiko und verweigert den Dienst, bis Mensch anders entscheidet.

Ich hasse Software die schlauer sein will als der Mensch.

Winni

Benutzeravatar
Roland Chastain
Beiträge: 156
Registriert: Sa 7. Jul 2012, 21:50
Wohnort: Saargemünd
Kontaktdaten:

Re: BGRABitmap und einfache Zeichenfunktionen?

Beitrag von Roland Chastain »

Winni hat geschrieben:
Sa 26. Feb 2022, 11:31
FireFox legt eine Datei mit Null Byte an und meldet dann ein Sicherheitsrisiko und verweigert den Dienst, bis Mensch anders entscheidet.
Ich habe den Link oben editiert. Ich habe "http" durch "https" ersetzt. Ich denke das sollte jetzt besser funktionieren.
Petit poisson deviendra grand,
Pourvu que Dieu lui prête vie.

Antworten