Forms und Bilder o.ä. auf Bildschirmauflösun skalieren

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.

Forms und Bilder o.ä. auf Bildschirmauflösun skalieren

Beitragvon dummy » 6. Mai 2017, 15:01 Forms und Bilder o.ä. auf Bildschirmauflösun skalieren

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!
dummy
 
Beiträge: 8
Registriert: 28. Mär 2015, 02:05

Beitragvon Mathias » 6. Mai 2017, 16:38 Re: Forms und Bilder o.ä. auf Bildschirmauflösun skalieren

Wie erreiche ich, dass mein Programm auf diversen Bildschirmauflösungen skaliert?

Meinst, das alles skaliert, Buttons, Schriften etc ?

Oder meinst du, das einfach der Bildschirm optimal ausgenutzt wird, so wie es zB. eine Textverarbeitung macht ?
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3195
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon wennerer » 7. Mai 2017, 07:07 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

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.
 
wennerer
 
Beiträge: 14
Registriert: 19. Mai 2015, 19:05

Beitragvon dummy » 7. Mai 2017, 08:12 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
dummy
 
Beiträge: 8
Registriert: 28. Mär 2015, 02:05

Beitragvon theo » 7. Mai 2017, 10:42 Re: Forms und Bilder o.ä. auf Bildschirmauflösun skalieren

Den Thread hier gab es auch noch: viewtopic.php?p=88759#p88759
theo
 
Beiträge: 7882
Registriert: 11. Sep 2006, 18:01

Beitragvon Mathias » 7. Mai 2017, 17:30 Re: Forms und Bilder o.ä. auf Bildschirmauflösun skalieren

@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 ;)

Wen es nur um die Images geht, könnte folgender Anhang eine Lösung sein.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3195
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Michl » 7. Mai 2017, 20:40 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).
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2169
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

• Themenende •

Zurück zu Sonstiges



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried