Hi!
Ich habe eine Anfänger (?) Frage.
Wie erreiche ich, dass mein Programm auf diversen Bildschirmauflösungen skaliert?
Es sollte mind. den Bereich 1024x768 (4:3) bis 1600:900 (16:9) "schaffen".
Muss da z.b. Forms in verschiedenen Grössen erstellen, bzw. bei Bildern sogar alle möglichen Grössen einbinden, um nach Ermitteln der Auflösung diese anzueigen?
VG!
Forms und Bilder o.ä. auf Bildschirmauflösun skalieren
-
- Beiträge: 6900
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Forms und Bilder o.ä. auf Bildschirmauflösun skalieren
Meinst, das alles skaliert, Buttons, Schriften etc ?Wie erreiche ich, dass mein Programm auf diversen Bildschirmauflösungen skaliert?
Oder meinst du, das einfach der Bildschirm optimal ausgenutzt wird, so wie es zB. eine Textverarbeitung macht ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 607
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: Forms und Bilder o.ä. auf Bildschirmauflösun skalieren
Hi dummy,
ich bin auch kein Profi, hab mir aber mal was gebastelt das halbwegs funktioniert hat. Kannst ja mal damit rum probieren.
Vielleicht hilft es dir.
Gruß
Bernd
ich bin auch kein Profi, hab mir aber mal was gebastelt das halbwegs funktioniert hat. Kannst ja mal damit rum probieren.
Vielleicht hilft es dir.
Gruß
Bernd
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Label1 : TLabel;
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
const breite = 1280; //ist meine Auflösung
hoehe = 800;
var
Form1 : TForm1;
fakx,faky : double;
FRB : integer;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
var h,w :double;
begin
h := Screen.Height;
w := Screen.Width;
fakx := w/breite;
faky := h/hoehe;
Form1.Left := round(40 * fakx);
Form1.Top := round(50 * faky);
Form1.Width := round(1200 * fakx);
Form1.Height := round(700 * faky);
Form1.Color := clwhite;
Form1.Font.Color:= clblack;
{$IfDef linux}
Form1.Font.Name := 'Ubuntu';//'Arial';
Form1.Font.Height := round(30 * faky);
FRB := round(25 * faky);
{$endif}
{$IfDef windows}
Form1.Font.Name := 'Tahoma';//'Arial';
Form1.Font.Height := round(35 * faky);
FRB := round(30 * faky);
{$endif}
Form1.Caption := 'Skalieren';
Label1 := TLabel.Create(self);
Label1.Parent := Form1;
Label1.AutoSize := false;
Label1.Left := round(50 * fakx);
Label1.Top := round(20 * faky);
Label1.Width := round(1120 * fakx);
Label1.Height := round(80 * faky);
Label1.WordWrap := true;
Label1.Font.Height := FRB;
Label1.Caption :='Sollte größer und kleiner werden!';
end;
end.
Re: Forms und Bilder o.ä. auf Bildschirmauflösun skalieren
Hi,
@Bernd: danke, das werde ich einmal aussprobieren.
@Mathias: Ich habe mit einem Grafikprogramm z.B. ein Stopschild gemalt, das als visualiserender Teil z.B. eine Fehlermeldung o.ä. verdeutlichen soll. Dies ist nun ein PNG. Während es auf Rechnern mit hoher Auflösung z.b. korrekt dargestellt wird, nimmt es bei geringer Auflösung fast den halben Bildschirm ein. Und ja, in diesem Fall muss das Bild irgendwie skaliert werden. Andere Programme kriegen das auch hin
VG
@Bernd: danke, das werde ich einmal aussprobieren.
@Mathias: Ich habe mit einem Grafikprogramm z.B. ein Stopschild gemalt, das als visualiserender Teil z.B. eine Fehlermeldung o.ä. verdeutlichen soll. Dies ist nun ein PNG. Während es auf Rechnern mit hoher Auflösung z.b. korrekt dargestellt wird, nimmt es bei geringer Auflösung fast den halben Bildschirm ein. Und ja, in diesem Fall muss das Bild irgendwie skaliert werden. Andere Programme kriegen das auch hin

VG
Re: Forms und Bilder o.ä. auf Bildschirmauflösun skalieren
Den Thread hier gab es auch noch: http://www.lazarusforum.de/viewtopic.php?p=88759#p88759
-
- Beiträge: 6900
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Forms und Bilder o.ä. auf Bildschirmauflösun skalieren
Wen es nur um die Images geht, könnte folgender Anhang eine Lösung sein.@Mathias: Ich habe mit einem Grafikprogramm z.B. ein Stopschild gemalt, das als visualiserender Teil z.B. eine Fehlermeldung o.ä. verdeutlichen soll. Dies ist nun ein PNG. Während es auf Rechnern mit hoher Auflösung z.b. korrekt dargestellt wird, nimmt es bei geringer Auflösung fast den halben Bildschirm ein. Und ja, in diesem Fall muss das Bild irgendwie skaliert werden. Andere Programme kriegen das auch hin
- Dateianhänge
-
test.zip
- (202.95 KiB) 105-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Forms und Bilder o.ä. auf Bildschirmauflösun skalieren
Nur als Info am Rande:
In den nächsten Wochen wird Lazarus 1.8 RC 1 rauskommen. Ondrej hat dort ein neues Feature einer automatischen Skalierung implementiert. Einfach das Formularproperty Scaled auf True stellen und sich freuen, daß die Formulare bei Rechnern mit hoher Auflösung passend sind.
Wer es nicht abwarten kann, kann jetzt schon per SVN Lazarus Trunk oder Lazarus 1.8 laden und testen (was sehr gewünscht ist, damit in der stabilen Version alle Bugs beseitigt sind).
In den nächsten Wochen wird Lazarus 1.8 RC 1 rauskommen. Ondrej hat dort ein neues Feature einer automatischen Skalierung implementiert. Einfach das Formularproperty Scaled auf True stellen und sich freuen, daß die Formulare bei Rechnern mit hoher Auflösung passend sind.
Wer es nicht abwarten kann, kann jetzt schon per SVN Lazarus Trunk oder Lazarus 1.8 laden und testen (was sehr gewünscht ist, damit in der stabilen Version alle Bugs beseitigt sind).
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;