Entwickler-Ecke
Multimedia / Grafik - mm in Pixel
heinze - Do 02.09.04 14:39
Titel: mm in Pixel
Hi
habe folgendes Problem mit canvas
Ich müste mehere Ringe ineinander zeichnen ( also ne Zielschscheibe) was auch klappt, nur happerts mit dem Masstab, weis vieleicht wer wie ich mm in pixel rechnen kann oder ob man iergendwie die messeinheit ändern kann?
iKilledKenny - Do 02.09.04 14:44
also canvas.pixelperinch gibt dir die pixel pro inch. ein inch hat 25,4 mm. der rest ist ein dreisatz:
bsp:
10 mm in pixel bei einer auflösung von 96 dpi:
pixel := 96 * 10 / 25.4
viele grüße
alex
MartinPb - Do 02.09.04 15:18
1" = 2.54cm
Man sagt, daß ein Bildschirm 72 DPI hat. Stimmt nicht (mehr). Das war ein mal, denn jeder Bildschirm hat seine eigene DPI. Ein 14" hat eine andere wie 15" oder 17" oder 19". Wie soll es also ein Bildschirm DPI geben. Das geht noch weiter, denn es gibt die 640x480 und die 800x600 und die 1024x768 usw. Auflösung. Jede hat eine andere DPI. Man muß schon mit dem Zentimetermaß am Bildschirm nachmessen.
Vergessen wir also den Bildschirm. Auch wenn das System versucht aus der Auflösung und der Monitorgröße ein DPI zu berechnen, ganz genau wird es nicht sein.
Was schon genauer ist, daß sind die Drucker. Hier kann man relativ genau arbeiten. 600 DPI sind eben 600 Punkte pro Inch.
600 / 25.4
ergeben Menge an Pixeln pro Zentimeter (ca. 236).
Deshalb solltest du sagen ob du es drucken oder auf dem Monitor haben willst.
Aber um deine letzte Frage zu beantworten: ja, man kann auf das Metrische System umschalten. So auf die Schnelle weiß ich aber nicht wie.
heinze - Fr 03.09.04 10:28
Es muss nich ganz genau sein , nur auf den 1/100 mm :roll: jedenfalls bekomme ich von dem Gerät solche messangaben, aber wens nur bis auf den 1/10 mm geht reichts auch, das mit canvas.pixelperinch funzt nicht bei mir, weder in der Hilfe ist das eingetragen noch die Codeverfolständigung kennt sowas unter canvas.
Das mit 96 DPI findet man auch in der Systemsteuerung, der masstab stimmt auch ungefähr wen ich das orginal vor dem Bildschirm halte nur im inneren ist es dan zu klein, was aber auch an meinem Zeichen-funktion liegen kann
Matthias - Fr 03.09.04 11:01
Hallo,
Delphi-Quelltext
1:
| SetMapMode(Printer.Canvas.Handle, MM_HIMETRIC); |
und schon zeichnest Du mit einer Auflösung von 0,01 mm. Beachte, dass die positive Y-Richtung jetzt nach oben zeigt.
Wenn Sie weiterhin nach untern zeigen soll sieht der Code folgendermaßen aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var pt : TSize; x,y : integer; ... begin ... Printer.BeginDoc; SetMapMode(Printer.Canvas.Handle, MM_HIMETRIC); setmapmode(Printer.Canvas.Handle,MM_ANISOTROPIC); GetWindowExtEx(Printer.Canvas.Handle, pt); x := pt.cx; y := pt.cy; SetWindowExtEx(Printer.Canvas.Handle, x, -y, @pt); ... |
cu
Matthias
heinze - Fr 03.09.04 13:27
Ähmm das geht jetzt in die falsche Richtung oder ist das mit printer nicht zum ausdrucken?
Mal ne kleine Erklärung zu der Sache:
Ich hab für den Schützenverein wo ich dabei bin ein kleines Verwaltungsprog gemacht, wo die Leistungen eingegeben, gespeichert und ausgewertet werden können. Ausgewertet werden die Karten von einem Teiler-Gerät welches ich an den Rechner anschliesen will.
Die Daten die ich von den Gerät bekomme sind zb der Ring-Wert, den x und den y Abstand des Schußes ausgehend von mittelpunkt.
Mit den x und y werten will ich dan am Rechner Die Karte "nachzeichene" also nicht ausdrucken da dies ja sinnlos wäre.
Allerdings mit der rechnung von ikilldkenny (pixel := 96 * mm / 25.4 ) stimmt die sache schon zu 99% allerdings mus ich noch an der funktion noch etwas ändern da ich die größenangaben leicht falsch verstanden habe oder vieleicht auch canvas anders arbeitet und ich für den rand noch ein pixel abziehen muss
jasocul - Fr 03.09.04 14:19
Ich will hier jetzt nichts falsches behaupten, aber die Form auf der du rummalst hat doch auch ein Canvas. Theoretisch musst Du dann also nur folgendes benutzen:
Delphi-Quelltext
1:
| SetMapMode(Form1.Canvas.Handle, MM_HIMETRIC); |
Haut mich aber nicht, wenns nicht stimmt. Ich habe nur versucht logisch zu denken.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!