Autor Beitrag
mats
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: Mo 26.11.18 17:54 
Hallo,

ich habe folgendes Problem: Ich habe von einem pdf-Formular (DIN A4) unter Angabe der Orginalgröße ein jpeg erstellt, welches jetzt die Größe 1653 x 2339 Pixeln hat (hoch). Wenn ich jetzt ein TImage nehme und das jpeg lade, wird es dermaßen groß dargestellt, das es den Bildschim des 'durchschnittlichen' Nutzers sprengt. Warum ist das jpeg so groß -> Dimension.
Das Ziel ist es, ein Fenster zu öffnen und das jpeg (ohne horz. Bildlauf aber vertical [max. 800pixel]) in Orginal DIN A4 darzustellen. Der Sinn dahinter: Es sollen Edit's darüber gelegt werden und das dann ausgefüllte Formular ausgedruckt bzw. gespeichert und/oder versendet werden. Wie berechne ich die erforderliche Größe in Pixeln (verlustfrei)?

Nachtrag: Der Inhalt der Edit-Felder wird in einem Record und dann in einer DB gespeichert, damit es später wieder geladen und bearbeitet werden kann. Irgend wie fehlt mir da der Ansatzpunkt.

mats
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2229
Erhaltene Danke: 415

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Mo 26.11.18 19:44 
Guten Abend mats,

das TImage gibt die Grafik standardgemäß 1:1 wieder. Wenn du es anpassen möchtest, dann benutze dessen Eigenschaften wie, .Stretch oder .Proportional. Letzters wird für dich von Interesse sein.

Meine Empfehlung: Stell' das TImage auf die Maße von Width = 565 und Height = 799. Das entspricht dem Verhältnis, welches im DIN A4 Format gegeben ist und liegt bei ~800 Px in der Vertikale.
Vergiss' nicht auf TImage.Proportional Eigenschaft!

Zu wissen:
DIN A4 hat die Maße 21cm x 29,7cm.
Die Verhältnisse dazu ...

Breite / Höhe = 21 cm / 29,7 cm = 1 / Wurzel(2)
Höhe / Breite = 29,7 cm / 21 cm = Wurzel(2)

Wenn du von Zentimetern in Pixel oder andersherum umrechnen möchtest, musst du die DPI einbeziehen:

Pixel = (Zentimeter / Inch) x DPI
Zentimeter = (Pixel / DPI) x Inch

1 Inch entspricht 2,54 cm.

Am PC-Monitor sollen 72dpi gegeben sein. Ob das stimmt, oder nicht, kann man ggf. mit der Funktion GetDpiForMonitor() abfragen.
Für diverse Fenster in Anwendungen, siehe GetDpiForWindow().

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)

Für diesen Beitrag haben gedankt: mats
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 863
Erhaltene Danke: 142

Win7
VS 2013, VS2015
BeitragVerfasst: Sa 01.12.18 07:43 
user profile iconmats hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

ich habe folgendes Problem: Ich habe von einem pdf-Formular (DIN A4) unter Angabe der Orginalgröße ein jpeg erstellt, welches jetzt die Größe 1653 x 2339 Pixeln hat (hoch).


Dann hast du einen 200 dpi Monitor?

Bitte denke daran, dass du es nicht immer schaffen wirst, irgendwas mit richtigen physischen Dimensionen darzustellen. Manche Monitore geben unrichtige dpi Werte aus, manche User möchten es nicht 100% sondern größer (dpi Skalierung) und dann ibt es auch noch Beamer, deren Bildgröße sehr flexibel ist :wink:

Am Besten beitest du dem User eine Skalierungsmöglichkeit, damit er selbst aussuchen kann, wie groß er es gerne haben möchte.