Skallierung 4K
- 
				Frank Ranis
- Beiträge: 212
- Registriert: Do 24. Jan 2013, 21:22
Skallierung 4K
Hallo ,
 
ich bastel meine Programme mit einer Bildschirmauflösung von 1920x1080.
 
Ein Kollege hat einen 4K-Monitor , ich leider nicht und kann nicht testen.
 
Laut seinen Angaben wird das Programm auch skalliert .
 
Bis auf die Grafiken in
Checkboxen
Radiobuttons
Speedbuttons
 
Was kann man tun ?
Das Programm läuft unter Linux-Mint-Cinnamon.
 
Gruß
 
Frank
			
			
									
									ich bastel meine Programme mit einer Bildschirmauflösung von 1920x1080.
Ein Kollege hat einen 4K-Monitor , ich leider nicht und kann nicht testen.
Laut seinen Angaben wird das Programm auch skalliert .
Bis auf die Grafiken in
Checkboxen
Radiobuttons
Speedbuttons
Was kann man tun ?
Das Programm läuft unter Linux-Mint-Cinnamon.
Gruß
Frank
www.flz-vortex.de
						- Ally
- Beiträge: 291
- Registriert: Do 11. Jun 2009, 09:25
- OS, Lazarus, FPC: Win und Lazarus Stable release
- CPU-Target: x64
Re: Skallierung 4K
Hallo Frank,
schau die doch mal die beiden Seiten an.
https://wiki.lazarus.freepascal.org/High_DPI
https://wiki.lazarus.freepascal.org/TImageList
Gruß
Roland
Hir noch ein kleines Beispiel zum testen:
			
			
													schau die doch mal die beiden Seiten an.
https://wiki.lazarus.freepascal.org/High_DPI
https://wiki.lazarus.freepascal.org/TImageList
Gruß
Roland
Hir noch ein kleines Beispiel zum testen:
					Zuletzt geändert von Ally am Di 28. Okt 2025, 08:56, insgesamt 1-mal geändert.
									
			
									
						- 
				Soner
- Beiträge: 762
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: Skallierung 4K
>>Ein Kollege hat einen 4K-Monitor , ich leider nicht und kann nicht testen.
Unter Windows gibt es bei Einstellungen>System>Bildschirm>Skalierung Option, womit man HiRes-Bildschirm emulieren kann, vielleicht gibt es so etwas auch bei Linux-Desktop.
Ich nehme an mit Speedbuttons meint er Bilder für Speedbuttons, dafür muss man 2 unterschiedlich aufgelöste Bilder, klein und groß, in ImageList laden. Ich glaube, dass die Infos dazu auf den von Ally verlinkten Seiten zu finden sind.
			
			
									
									
						Unter Windows gibt es bei Einstellungen>System>Bildschirm>Skalierung Option, womit man HiRes-Bildschirm emulieren kann, vielleicht gibt es so etwas auch bei Linux-Desktop.
Checkboxes und Radiobuttons werden von verwendete Widgetset (GTK/QT/Win32/Cococa) gezeichnet. Auf Linux wird GTK2, was Lazarus verwendet, als veraltet betrachtet. Vielleicht solltest du dein Programm mit QT-Widgetset kompilieren, ich weiß nicht mehr welche Version aktuell ist, QT5, QT6, QT7 die erfinden das Rad ständig neu auf Linuxfront.Frank Ranis hat geschrieben: Mo 27. Okt 2025, 15:25 ..
Bis auf die Grafiken in
Checkboxen
Radiobuttons
Speedbuttons
,,,
Ich nehme an mit Speedbuttons meint er Bilder für Speedbuttons, dafür muss man 2 unterschiedlich aufgelöste Bilder, klein und groß, in ImageList laden. Ich glaube, dass die Infos dazu auf den von Ally verlinkten Seiten zu finden sind.
Re: Skallierung 4K
Aber Achtung: unter Windows gibt es dazu zwei Möglichkeiten:Soner hat geschrieben: Mo 27. Okt 2025, 22:27 >>Ein Kollege hat einen 4K-Monitor , ich leider nicht und kann nicht testen.
Unter Windows gibt es bei Einstellungen>System>Bildschirm>Skalierung Option, womit man HiRes-Bildschirm emulieren kann,
- "Skalierung" (unter "Anzeige") - das ändert die Pixeldichte (Pixels/Inch), und das ist genau das was von LCLScaling unterstützt wird. Hier werden alle Größen skaliert.
- "Textgröße" (unter "Barrierefreiheit") - das ändert nur die Schriftgröße. Wenn das unterstützt werden soll, muss man ganz intensiv mit Anchoring und Autosize arbeiten, damit überlappende Controls vermieden werden.
Normalerweise bin ich auf Windows und arbeite unter 96ppi Aufklösung (100%), Um eine Anwendung auf Skalierungsprobleme zu testen, habe ich mir einen zweiten User eingerichtet, der mit 144 ppi (150%) arbeitet (man könnte auch im laufenden System die Auflösung ändern, aber das bringt die Anordnung der Desktop-Icons durcheinander - daher der zweite User). Auf dem 150%-System sollten dann alle Dimensionen auf der 1.5-fache vergrößert sein.
Alternativ kann man sich auch eine virtuelle Maschine für das höher-auflösende System einrichten.
Um Icons richtig zu skalieren, muss man diese in TImageList stecken. "Scaled" auf true setzen, um die Skalierung je nach Auflösung zu aktivieren. Üblicherweise stellt man jedes Icon in drei Größen zur Verfügung: für 100%-Auflösung, 150% und 200%. Dafür im Object-Inspektor die Grundgröße für 100% in den Properties Width und Height eintragen (üblicherweise: 16) und die anderen Größen im Imagelist-Editor registrieren (24, 32). Um andere Auflösungen zu unterstützen, einen Handler für das OnGetWidthForPPI-Event der ImageList schreiben:
Code: Alles auswählen
procedure TForm1.ImageList1GetWidthForPPI(Sender: TCustomImageList;
  AImageWidth, APPI: Integer; var AResultWidth: Integer);
begin
  AResultWidth := MulDiv(AImageWidth, APPI, 96);
end;- W126
- Lazarusforum e. V.
- Beiträge: 59
- Registriert: Mo 27. Jul 2015, 11:19
- OS, Lazarus, FPC: Linux
- CPU-Target: Xeon Silver x64
- Wohnort: Hofheim am Taunus
Re: Skallierung 4K
Den Skalierung auf 150% zu setzen ist keine Lösung. Die Symbole, Rahmen usw werde viel zu groß.
Ich habe eine Abfrage in meiner Anwendung
{ Anpassung für Bildschirme ab 4K }
if screen.width > 3800 then Set4KStyle;
und setze dann leider noch Objekt für Objekt mit Fonts und Höhe um.
z.B.
MainMenuForm.SpkToolbar.Appearance.Tab.TabHeaderFont.Size := 11;
MainMenuForm.SpkToolbar.Appearance.Pane.CaptionFont.Size := 9;
MainMenuForm.SpkToolbar.Appearance.Element.CaptionFont.Size := 9;
Eine bessere Lösung ist mir noch nicht eingefallen.
Gruß Jörg
			
			
									
									
						Ich habe eine Abfrage in meiner Anwendung
{ Anpassung für Bildschirme ab 4K }
if screen.width > 3800 then Set4KStyle;
und setze dann leider noch Objekt für Objekt mit Fonts und Höhe um.
z.B.
MainMenuForm.SpkToolbar.Appearance.Tab.TabHeaderFont.Size := 11;
MainMenuForm.SpkToolbar.Appearance.Pane.CaptionFont.Size := 9;
MainMenuForm.SpkToolbar.Appearance.Element.CaptionFont.Size := 9;
Eine bessere Lösung ist mir noch nicht eingefallen.
Gruß Jörg
- 
				Frank Ranis
- Beiträge: 212
- Registriert: Do 24. Jan 2013, 21:22
Re: Skallierung 4K
Hallo ,
ich danke euch für die vielen Tipps.
Das wird noch ein Spass (Boa).
Die Anwendung habe ich seit 18 Jahren in der Mache , und immer wieder weitergebaut und dranngefrickelt.
Schriftgrößen und Fonts habe ich immer manuelle eingetragen , nie default benutzt.
Der Anker-Editor wurde nie benutzt , alle Komponenten immer von Hand aneinandergereiht , so wie es optisch einigemaßen passte.
Und nun fliegt mir das ganze Widgetset- und Hochauflösende-Gedöns um die Ohren.
Gruß
Frank
			
			
									
									ich danke euch für die vielen Tipps.
Das wird noch ein Spass (Boa).
Die Anwendung habe ich seit 18 Jahren in der Mache , und immer wieder weitergebaut und dranngefrickelt.
Schriftgrößen und Fonts habe ich immer manuelle eingetragen , nie default benutzt.
Der Anker-Editor wurde nie benutzt , alle Komponenten immer von Hand aneinandergereiht , so wie es optisch einigemaßen passte.
Und nun fliegt mir das ganze Widgetset- und Hochauflösende-Gedöns um die Ohren.
Gruß
Frank
www.flz-vortex.de
						- 
				MmVisual
- Beiträge: 1609
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4.2 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Skallierung 4K
Lazarus kann das schon perfekt.
Wegen dem Anker-Editor...
Ja ich habe vor ein paar Jahren diesen ebenfalls in meiner Anwendung mit tausenden von Komponenten doch mal umgesetzt. Das war 1 Woche Arbeit - hat sich jedoch gelohnt. Nur muss man immer wieder die Höhe vom überliegenden Panel manuell setzen, das kann der Lazarus Anker leider irgendwie nicht automatisch.
Man muss nunmal die Dinge so nutzen wie diese von anderen Programmierern vorgesehen sind. Damit kann man deren Features voll nutzen und hat es schlussendlich viel einfacher. Daher, baue deine EXE um, es geht einfacher als wie man am Anfang denkt.
Alternative: Wer mit dem Kopf durch die Wand gehen will, der sollte sich vorher überlegen, was man da drüben überhaupt will.
			
			
									
									Code: Alles auswählen
TForm.ScaleBy(Faktor, 100);
//Also:
procedure TForm1.FormCreate(Sender: TObject); 
Begin
  ScaleBy(150, 100);
End;Ja ich habe vor ein paar Jahren diesen ebenfalls in meiner Anwendung mit tausenden von Komponenten doch mal umgesetzt. Das war 1 Woche Arbeit - hat sich jedoch gelohnt. Nur muss man immer wieder die Höhe vom überliegenden Panel manuell setzen, das kann der Lazarus Anker leider irgendwie nicht automatisch.
Man muss nunmal die Dinge so nutzen wie diese von anderen Programmierern vorgesehen sind. Damit kann man deren Features voll nutzen und hat es schlussendlich viel einfacher. Daher, baue deine EXE um, es geht einfacher als wie man am Anfang denkt.
Alternative: Wer mit dem Kopf durch die Wand gehen will, der sollte sich vorher überlegen, was man da drüben überhaupt will.
EleLa - Elektronik Lagerverwaltung - www.elela.de
						- W126
- Lazarusforum e. V.
- Beiträge: 59
- Registriert: Mo 27. Jul 2015, 11:19
- OS, Lazarus, FPC: Linux
- CPU-Target: Xeon Silver x64
- Wohnort: Hofheim am Taunus
Re: Skallierung 4K
wow, das werde ich mal testen. Vielen Dank für den Tip!Lazarus kann das schon perfekt.
Re: Skallierung 4K
Ganz genau. Denn Lazarus ist in Lazarus geschrieben, für das Layout sind genau die hier genannten Tools verwendet.
- af0815
- Lazarusforum e. V.
- Beiträge: 6983
- 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: Skallierung 4K
Wenn man ein App solange betreut, so fliegen einem die kleinen Sünden später als schwere Bürde auf dem Kopf.Frank Ranis hat geschrieben: Di 28. Okt 2025, 10:03 Und nun fliegt mir das ganze Widgetset- und Hochauflösende-Gedöns um die Ohren.
Ich glaube die Erfahrung macht jeder, der eine App länger pflegt oder plötzlich gezwungen wird, die Plattform zu wechseln.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder  nachsehen in  LazInfos/LazSnippets).
						- 
				Warf
- Beiträge: 2220
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: Skallierung 4K
Unter Windows wird die Skalierung über das Manifest der App festgelegt, das geht einfach über die Projekteinstellungen. Unter Linux ist die Skalierung etwas anders. Da gibt es zum einen die Unterschiede zwischen X11 und Wayland. Scaling in X11 ist einfach pixel scaling. Da musst du nichts machen.
Bei Wayland kommt es etwas drauf an. XWayland, was X11 Anwendungen in Wayland emuliert (wird z.B. für GTK2 benutzt) kann 2 arten von scaling, entweder pixel scaling wie altes X11, oder application scaling. Dabei wird dem Programm eine viel größere Auflösung vorgegaukelt und dann auf die schmale Auflösung des Bildschirms projeziert. Wenn die App in relativen Größen arbeitet ist das zweite besser, in absoluten Größen dann das erste.
Wie das scaling bei Wayland Anwendungen in Wayland läuft (z.b. wenn man qt6 benutzt) weis ich grade nicht direkt, aber ich gehe von aus das QT sich selbst drum kümmert, wie das win32 widgetsrt unter windows
			
			
									
									
						Bei Wayland kommt es etwas drauf an. XWayland, was X11 Anwendungen in Wayland emuliert (wird z.B. für GTK2 benutzt) kann 2 arten von scaling, entweder pixel scaling wie altes X11, oder application scaling. Dabei wird dem Programm eine viel größere Auflösung vorgegaukelt und dann auf die schmale Auflösung des Bildschirms projeziert. Wenn die App in relativen Größen arbeitet ist das zweite besser, in absoluten Größen dann das erste.
Wie das scaling bei Wayland Anwendungen in Wayland läuft (z.b. wenn man qt6 benutzt) weis ich grade nicht direkt, aber ich gehe von aus das QT sich selbst drum kümmert, wie das win32 widgetsrt unter windows

 
 

 Verein
Verein 
 Links
Links Suche
Suche