PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Millimeter in Pixel umrechnen


bulla
2003-07-26, 01:41:25
Moin

Ich soll ein kleines Java-Progrämmle für einen Optiker herstellen, das einige Punkte (eines Brillenglas-Rohlings) als Preview auf einer Canvas-Fläche darstellt. Diese Punkte sollen anhand von Millimeter-Eingaben, die als double-Werte gespeichert werden (also auch halbe Millimeter), errechnet werden. Im Anschluss daran soll die erstellte Grafik ausgedruckt werden.

So weit so gut.

Nur bin ich jetzt am überlegen, wie ich die Methode MillimeterToPixel aufbauen soll.
Die Canvas-Graphik (als Vorschau in einem 800*550-Fenster, könnte aber skaliert werden) muss nicht exakt die Werte wiederspiegeln, das Gedruckte dagegen muss(!) genau sein.
Wie würdet ihr da rangehen?
In der Api habe ich keine derartigen Methoden finden können, die das für mich übernehmen....
Auch ist mir momentan noch nicht 100pro klar, wie ich in diesem Zusammenhang runde Sachen, z.b. Ovale (ist ja bei Brillenglas nicht selten :)), treppenstufenfrei darstelle (wie gesagt, auf dem Bildschirm ist es egal, auf dem Papier muss es genau sein)

ethrandil
2003-07-26, 10:00:35
abrundungen, ovale, linsen könnte man wohl mit java2D zeichnen (mit aktiviertem AA).
Was das Drucken angeht ...

Ich hab da mal gesucht ...
java.awt.print.PageFormat
hat eine Methode namens: double getHeight(), bzw getWidth().
Beschreibung: "Returns the height, in 1/72nds of an inch, of the page."
java.awt.PrintJob.getPageDimension()
Beschreibung: " Returns the dimensions of the page in pixels."
Damit hätten wir nun theoretisch alles, was wir brauchen. Pixel und reale breite, allerdings in 72tel-inch. Sollte man wohl lieber umrechnen in 10tel-centimeter ;)
ansonsten:
SeitenbreiteMM / SeitenbreitePixel = pixelProMm

ist das elipsenzeichnen denn ein problem?
Ich würde jetzt einfach aus intuition mal sagen man kann ein Shape basteln, indem man die Schnittfläche 2er Elipsen nimmt ... (also, konkave)
Das könnte man problemlos mit AA zeichnen. Wenn du das ganze pixelperpixel zeichnest, dann würde ich das in der 3fachen auflösung tun, und dann mit AA runterskalieren!

bulla
2003-07-27, 05:05:47
Danke erstmal

Habe auf den Java-Seiten irgendwo eine Beispieldatei für einen Standart-Druck-Dialog etc. mit Beispieldruck gefunden, funzt prächtig und ich habe dabei festgestellt, dass alles, was rund sein soll, auch wirklich rund ausgedruckt wird :)
http://java.sun.com/j2se/1.4.2/docs/guide/jps/spec/appendix_2DPrinterJob.fm.html

Das reicht für mein Zwecke aus :)