[gelöst] Wie benutzt man Fonts zusammen mit BGRABitmaps?

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
kirchfritz
Beiträge: 240
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 4.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

[gelöst] Wie benutzt man Fonts zusammen mit BGRABitmaps?

Beitrag von kirchfritz »

Hallo,
ich möchte unter Windows 11 ein einfaches Konsolenprogramm schreiben, um mit Hilfe BGRABitmaps PNG-Dateien zu erzeugen. In die PNG soll unteranderem Text ausgegeben werden.
Dazu habe ich folgendes versucht:

Code: Alles auswählen

program fontdraw_with_BGRABitmap;
{$mode objfpc}{$H+}
uses
  Classes,  Types,
  BGRABitmap,
  BGRAGraphics,
  BGRABitmapTypes;

procedure go;
var
  image: TBGRABitmap;
begin
  image := TBGRABitmap.Create(400,400,BGRAWhite);
  image.FontName:='Arial';
  image.FontHeight := 30;
  image.FontAntialias := true;
  image.FontStyle := [fsBold];
  image.TextOut (5, 5, 'Hello world', BGRABlack);
  image.SaveToFile('HelloWorld.png');
  image.free;
end;

begin
  writeln('go...');
  go;
  writeln('finished.');
  writeln('Press <ENTER> to continue.');
  readln;
end.       
Leider läßt sich das nicht kompilieren.
Irgendwie wird der Font nicht gefunden, obwohl "Arial.ttf" dort steht, wo das EXE entsteht.
Was mache ich falsch?
fontdraw_with_BGRABitmap.lpr
(590 Bytes) 94-mal heruntergeladen
Dateianhänge
Screenshot 2025-09-28 114040.png
Screenshot 2025-09-28 114040.png (189.97 KiB) 431 mal betrachtet
fontdraw_with_BGRABitmap.lpi
(1.76 KiB) 94-mal heruntergeladen
Zuletzt geändert von kirchfritz am So 28. Sep 2025, 13:24, insgesamt 1-mal geändert.


Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6956
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Wie benutzt man Fonts zusammen mit BGRABitmaps?

Beitrag von af0815 »

Ein Problem mit reinen Konolenprogrammen ist, das etliche Sachen nicht initialisiert werden. Das wird nur bei GUI-Programmen gemacht, da wird das Widgetset im Hintergrund initialisiert. IMHO typisch sind auch die WS.... Meldungen.

In dem Beispiel von Theo verlinkt findet man hier eine Art Fontmager (LazFreeTypeFontCollection). Wenn man sich die Namen mit dem FontManager vom fpc ansieht, so sieht man wie im Beitrag erwähnt, das die Namensgebung - äh, etwas kreativ sein kann - es muss nicht das so drinnen sein, wie es aussen (Filenamen) aussieht. Das ist immer eine komplexe Sache. Auch wo das Betriebssystem seine Font speichert ist oft nicht besonders durchsichtig.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

kirchfritz
Beiträge: 240
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 4.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: Wie benutzt man Fonts zusammen mit BGRABitmaps?

Beitrag von kirchfritz »

Danke für schnellen Antworten!
Meine Lösung sieht jetzt so aus:
Screenshot 2025-09-28 132049.png
Screenshot 2025-09-28 132049.png (216.02 KiB) 406 mal betrachtet

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6956
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: [gelöst] Wie benutzt man Fonts zusammen mit BGRABitmaps?

Beitrag von af0815 »

Sieht ja gut aus.

BTW: Mit Schach beschäftigt sich Roland Chastain sehr viel und hat schon einige Frontend für Schachengine vorgestellt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

kirchfritz
Beiträge: 240
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 4.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: [gelöst] Wie benutzt man Fonts zusammen mit BGRABitmaps?

Beitrag von kirchfritz »

Danke für den Hinweis.
Roland Chastain ist mir als Autor diverser SchachEngines bekannt!
Ich wollte aber keine SchachEngine schreiben, sondern nur eine Schachstellung als PNG-Datei erzeugen.
Und das hat mit den Hinweisen aus dem Forum bestens und schnellstens geklappt.
Nochmals vielen Dank!

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

Re: [gelöst] Wie benutzt man Fonts zusammen mit BGRABitmaps?

Beitrag von Roland Chastain »

Hallo zusammen!

Ich habe ein kürzeres Beispiel (das ich nur unter Linux ausprobiert habe). Das Projekt verwendet das Paket BGRABitmapPack4NoGUI.

Code: Alles auswählen

program demo;

uses
  Classes, SysUtils,
  BGRAGraphics, BGRABitmap, BGRABitmapTypes;

var
  bmp: TBGRABitmap;

begin
  TBGRABitmap.AddFreeTypeFontFolder(GetCurrentDir);

  bmp := TBGRABitmap.Create(256, 256, BGRAPixelTransparent);
  bmp.FontName := 'Chess Condal';
  bmp.FontHeight := 256;
  bmp.TextOut(0, 0, 'b', BGRABlack);

  bmp.SaveToFile('demo.png');
  bmp.Free;
end.
Petit poisson deviendra grand,
Pourvu que Dieu lui prête vie.

Mathias
Beiträge: 7039
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: [gelöst] Wie benutzt man Fonts zusammen mit BGRABitmaps?

Beitrag von Mathias »

Hallo,
ich möchte unter Windows 11 ein einfaches Konsolenprogramm schreiben, um mit Hilfe BGRABitmaps PNG-Dateien zu erzeugen. In die PNG soll unteranderem Text ausgegeben werden.
Was auch noch eine Lösung ist, mit Cairo.

Unter Linux, läuft es auf Anhieb, unter Windows läuft es auch, wen man die DLL hat.
Mit wine getestet.
Dateianhänge
png_cairo.zip
(2.13 KiB) 264-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten