Autor |
Beitrag |
klezmor
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: 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
|
Verfasst: So 17.04.05 14:42
Ich würde es nicht umrechnen, sonder den MapMode mit 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 
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: So 17.04.05 14:45
ich weiß aller dings nicht was der mapmode ist
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 17.04.05 15:04
klezmor hat folgendes geschrieben: | ich weiß aller dings nicht was der mapmode ist |
Schon mal auf den Link in meinem Beitrag geklickt?
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: 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
      
Beiträge: 385
Win XP
D7 PE, D2k5 Trial
|
Verfasst: 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
|
Verfasst: 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
      
Beiträge: 385
Win XP
D7 PE, D2k5 Trial
|
Verfasst: So 17.04.05 15:23
ja, ich sag's ja nur. 
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: 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  .
|
|
klezmor 
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: 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:
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);var ortsfaktor:integer; g:double; begin g:=9.81; t:=t+1;
strecke:=round((0.5 * g *(t*t)));
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 raziel: Delphi-Tags hinzugefügt.
|
|
theTJ
      
Beiträge: 43
WIN XP: SP1
D7 enterprise
|
Verfasst: 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
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: 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 
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: 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
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: 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 
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Mi 20.04.05 20:25
soll das jetzt heißen 1024 pixel entsprechen 14 cm bei einer Auflösung von 72 dpi ?
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: Mi 20.04.05 22:55
Heiko 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
 "17" Bildschirm" bedeutet: Diagonale ist |17*2.54| cm lang.
 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
      
Beiträge: 247
Windows XP Pro
Turbo Delphi Explorer, D2005 PE
|
Verfasst: 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
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
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: 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
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
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Do 21.04.05 06:54
@delfiphan:  Ich hatte beim schreiben meines letzten Postes vergessen, das dpi ja Inch sind, und keine Zentimeter  .
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
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
|
Verfasst: 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?
|
|