Autor Beitrag
klezmor
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: So 17.04.05 14:38 
Hallo für mein Programm brauche Längenangaben in Zentimeter.
Wie kann ich also cm in pixel umrechnen bzw. wieviele pixel sind ein cm?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 17.04.05 14:42 
Ich würde es nicht umrechnen, sonder den MapMode mit Suche im MSDN SETMAPMODE auf MM_LOMETRIC oder auf MM_HIMETRIC setzten. da du nicht sagst in wie fern du das in deinem Programm brauchst, kann ich nicht sagen, ob dir das hilft.
klezmor Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: So 17.04.05 14:45 
ich weiß aller dings nicht was der mapmode ist
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 17.04.05 15:04 
user profile iconklezmor hat folgendes geschrieben:
ich weiß aller dings nicht was der mapmode ist

Schon mal auf den Link in meinem Beitrag geklickt?
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: So 17.04.05 15:10 
@klezmor: Du meinst doch mit Zentimetern, dass der Drucker in Zentimetern drucken soll und nicht in Pixeln? Oder meinst du, dass es auf dem Bildschirm ein 1cm sein soll?
LH_Freak
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 385

Win XP
D7 PE, D2k5 Trial
BeitragVerfasst: So 17.04.05 15:18 
ich denke er will einfach wissen:

1 cm entrspricht x Pixeln

und andersrum.


Oder??
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 17.04.05 15:22 
Ja, aber wenn man wüßte, was er vor hat, bräuchte er das eventuell gar nicht wissen.
LH_Freak
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 385

Win XP
D7 PE, D2k5 Trial
BeitragVerfasst: So 17.04.05 15:23 
ja, ich sag's ja nur. :D
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: So 17.04.05 15:40 
Ich glaub wir sollten erst mal auf klezmor warten, bevor wir alle Varianten aufzählen was er gemeint haben könnte :wink: .
klezmor Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: Mo 18.04.05 16:23 
Ok tut mir leid, dass ich mich erst so spät zurückmelde aber ich war anderweitig beschäftigt.
so sieht das problem aus:
In meinem Programm bewegt sich ein shape per timer nach unten um eine realistische Fallgeschwindigkeit darzustellen brauche ich wie schon gesagt diesen um rechnugsfaktor von cm in pixel bzw pixel in cm.
mein programm sieht bis jetzt so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Timer1Timer(Sender: TObject);// intervall 1ms
var ortsfaktor:integer;
    g:double;
begin
g:=9.81;
t:=t+1;

strecke:=round((0.5 * g *(t*t)));(* mag einigen von euch vielleicht noch bekannt 
vorkommen Freier Fall : h = 1/2*g*t^2)

v:=round(sqrt(2*g*strecke));

strecke:=round(strecke*?); (* dieses Fragezeichen suche ich ein Faktor der cm in pixel umwandelt*)



shape1.top:=strecke;
label1.caption:=inttostr(v);
end;



Oh lasst euch bitte nicht von diesem schlechten Beispiel irritieren mir fällt gerade ein, dass der Faktor dann auch von dem Timerintervall abhängt also schlecht.
Vielleicht habt ihr eine bessere, elegantere Lösung, bis jetzt habe ich ein Timerintervall von 1ms, damit das shape schön regelmäßig beschleunigt hinunterfliegt.
Finde diese Lösung aber schlecht könnt ihr mir helfen?

oder ganz einfach: körper soll realistisch beschleunigt nach unten fallen.

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt.
theTJ
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 43

WIN XP: SP1
D7 enterprise
BeitragVerfasst: Di 19.04.05 14:59 
Hi klezmor,

Einen festen Faktor gibt es nicht, da die größe der Pixel von der Auflösung des Bildschirmes abhängt...

_________________
theTJ
"Die Antwort auf die Frage nach dem Leben, dem Universum und dem ganzen Rest ist 42, aber was ist die Frage genau?" aus "Per Anhalter durch die Galaxis" von Douglas Adams
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Di 19.04.05 18:28 
Soweit ich weiß hat der PC-Monitor normalerweise 72 dpi. Aber auf einem Flachbildschirm sieht es außerdem anders aus, als auf einem Röhrenmonitor, da der Röhrenmonitor eine gewölbte Oberfläche hat. Deswegen sieht ein 17" Flachbildschirm größer aus als ein Röhrenmonitor. Aber ich will hire nicht zu weit vom Thema abtreiben mit der Diskussion zwischen Röhrenmonitor und Flachbildschirm.
Bei deinem Programm wär es auch sinnvoll nicht ein Zentimeter mit der Reallität zu vergleichen, da ein Bildschirm, von der Größe her, begrenzt ist. Dadurch kann es sein, dass man den fallenden Körper kaum wahrnimmt, wordurch die demonstration fast sinnlos ist, bisauf du willst zeigen, wie schnell das wirklich ist.
klezmor Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: Mi 20.04.05 20:14 
ja ich will schon zeigen wie das wirklich ist.
aber dieses Programm sollte auch nur ein Testprogramm sein ich will einen Pendelschwung simmulieren und da wäre es schon nützlich, wenn ich das realistisch darstellen könnte, per ortsfaktor ließe sich das natürlich auch noch verlangsamen.
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Mi 20.04.05 20:20 
Dann darfst du ja wirklich nur eine sehr kurze Schnur nehmen. Die Schnur darf bei einer Bidschirmhöhe von 1024 Pixel max. 14cm lang sein (ohne Gewicht gerechnet). Oder du musst alles in einem bestimmten Maßstab nehmen. Ich glaube aber, dass du mit 72 dpi getrost arbeiten darfst.
klezmor Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: Mi 20.04.05 20:25 
soll das jetzt heißen 1024 pixel entsprechen 14 cm bei einer Auflösung von 72 dpi ?
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Mi 20.04.05 22:55 
user profile iconHeiko hat folgendes geschrieben:
Die Schnur darf bei einer Bidschirmhöhe von 1024 Pixel max. 14cm lang sein

Heiko: Es gibt keinen fixen Zusammenhang zwischen Pixeln und cm. Das kommt eben auf die DPI draufan.

1 DPI = 1 Pixel pro Inch = 1 Pixel pro 2.54 cm
72 DPI = 72 Pixel pro 2.54 cm = 28.3 Pixels pro cm
=> 1024 Pixels entsprechen (1024/72*2.54) cm = 36 cm

:arrow: "17" Bildschirm" bedeutet: Diagonale ist |17*2.54| cm lang.

:arrow: Das Bildschirmverhältnis ist üblicherweise 4:3.
Das bedeutet dann:
Bildschirmbreite = |4/5*Zoll*2.54| cm
Bildschirmhöhe = |3/5*Zoll*2.54| cm
Falls nun die Bildschirmauflösung auch 4/3 ist, z.B. 1024x768, dann berechnet sich die DPI aus:
|DPI| = |(5/4)/Zoll*MaxX|;

Beispiel: 17" Bildschirm (4:3)
Bildschirmbreite = |4/5*17*2.54| cm = 34.5 cm
Bildschirmhöhe = |3/5*17*2.54| cm = 25.9 cm
Der Bildschirm hat |(5/4)/17*1024| DPI = 75.29 DPI

Es ist noch zu bemerken, dass bei Bildschirmen häufig die Diagonale des ganzen Monitors und meist nicht die effektive Diagonale der Bildfläche angegeben ist. Der effektive DPI Wert ist also meist etwas tiefer als der Wert, den man sich berechnet. Wenn es genau sein muss, kannst du ja die Bildschirmdiagonale selbst ausmessen :)
CrazyLuke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 247

Windows XP Pro
Turbo Delphi Explorer, D2005 PE
BeitragVerfasst: Mi 20.04.05 23:20 
Zitat:
Die Auflösung ist tatsächlich unerheblich, wenn ein Bild rein digital verarbeitet und angezeigt wird. Deshalb hat das GIF-Format so etwas gar nicht: GIF wurde ausschließlich für den Screen erschaffen. Bei den Digitalkameras sind wir da ebenfalls schon einen Schritt weiter. Da fragt nämlich keiner nach, wieviele Zentimeter die Bilder breit sind oder welche Auflösung sie besitzen. Hier dreht sich alles um Megapixel. Und das ist der richtige Ansatz. Erst wenn man das Ganze ausdrucken möchte, wenn also die Pixel wieder in Zentimeter umgewandelt werden, ist das Einführen einer Auflösung als Umrechnungsfaktor wichtig.
Der 72dpi-Mythos :D

Außerdem heißt es streng genommen ppi, denn es geht ja um Bilder mit Pixeln. Und dieser ppi-Wert wird (wie im Zitat beschrieben) erst wichtig, wenn das Ding in den Druck soll. Das Ergebnis ist ein Bild mit Punkten (Dots), also dpi...

MfG
CrazyLuke

_________________
"Was kommt vor 'Schmetterlinge im Bauch'? Raupen im A*sch!" (Bastian Pastewka, "Pastewka", Sat1)
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Mi 20.04.05 23:27 
@CrazyLuke: Das Ziel von klezmor ist es, ein Pendel massstabgetreu auf dem Bildschirm darzustellen. Dazu sind diese Rechnungen unumgänglich.

Das wichtigste hätte ich beinahe vergessen. Wenn der DPI einmal bekannt ist, kannst du in deinem Programm einfach eine Konstante
ausblenden Delphi-Quelltext
1:
2:
Const
 cm = DPI/2.54;
definieren.
Mit Rectangle(0,0,1*cm,1*cm) kannst du dann z.B. ein Quadrat mit Höhe/Breite 1cm zeichnen.
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Do 21.04.05 06:54 
@delfiphan: :autsch: Ich hatte beim schreiben meines letzten Postes vergessen, das dpi ja Inch sind, und keine Zentimeter :oops: .

Aber ich hab ne Idee zum lösen diese Problem. ICh bezweifle zwar das die wirklich funktioniert, aber probieren kann man es ja mal. Man könnte doch
ausblenden Delphi-Quelltext
1:
SetMapMode(Form1.Handle, MM_LOMETRIC);					

verwenden. Ich glaub aber das diese Variante auch nicht funktioniert, aber probieren kann man es.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 21.04.05 11:36 
Ihr braucht den ganzen Umrechnungskram nicht. Stellt den MapMode um und zeichne auf dein Canvas in Zentimetern. Wo ist das Problem?