Article View: pl.comp.lang.java
Article #141872Re: odwzorowanie milimetrów na pixele
From: SasQ
Date: Wed, 22 Oct 2008 09:05
Date: Wed, 22 Oct 2008 09:05
71 lines
4279 bytes
4279 bytes
Dnia 22-10-2008 o 08:44:41 kaszpiro napisał(a):
> W mojej aplikacji chciałbym uzyskać taki efekt:
> tworząc moj obiekt Ramka jako parametry podaje wysokosc i szerokosc
> w mm. metoda rysujaca tego obieku rysuje prostokąt którego parametrami
> są oczywiście pixele i tutaj napotykam na problem właściwego
> przeliczenia mm na px, aby zachować właściwą skalę.
No to musisz wiedzieć, ile mm mierzy jeden pixel.
Nie będzie to stała zależność, bo przelicznik można wybrać dowolnie i
będzie on zależał np. od rozdzielczości monitora i jego wymiarów.
Wzór jednak wyprowadzić jest dość łatwo:
Zauważ, że jeśli np. masz tryb graficzny 1024x768, a monitor ma wymiary
320x240 mm, to wiesz, że w poziomie w tych 320 mm musi się zmieścić te
1024 pixele, czyli dzielisz jedno przez drugie i wyjdzie Ci, ile mm
przypada na szerokość każdego pixela: 320/1024 = 0.3125 mm. Pionowy
rozmiar pixela liczysz podobnie: 240/768 = 0.3125 mm.
Luzik, pixel jest kwadratowy ;)
Można też policzyć odwrotnie: ile pixeli mieści się w każdym milimetrze.
W tym celu wystarczy odwrócić ułamki:
1024/320 = 3.2 px.
I teraz gdy ktoś poda, że Ramka ma mieć 100x100 mm [10x10 cm], to
po prostu mnożysz je przez ilość pixeli w każdym milimetrze:
10x3.2=32 pixele.
Ogólnie przy przeliczaniu z jednej skali do innej [z jednego układu
współrzędnych do innego], stosuje się zwykła transformację liniową:
jednostka_układu_B
współrzędna__układzie_A * -------------------- = współrzędna_w_układzie_B
jednostka_układu_A
To jest tylko zamiana skali. Gdy układy są dodatkowo przesunięte i
obrócone,
trzeba dodać parę czynników. Ale to Cię już chyba nie dotyczy ;)
> Wiem, że wielkość piksela zależy od wielkości i rozdzielczości ekranu
> (DPI)
Czy ja wiem... Punkty na cal to chyba nie to samo, co pixele na milimetr.
Chyba że uznamy, że punkty i pixele to to samo i dodatkowo przeliczymi cale
na milimetry.
> widziałem kilka wzorów na przełożenie mm to px, ale wydaje mi się, że
> nie są one dobre.
To trza było je wyprowadzić samemu, "na logikę", a później sprawdzić ;)
Spróbuj te moje. Powinny działać. Gdyby coś nie działało, spróbuj jeszcze
odwrócić ten ułamek z jednostkami, bo czasami mylą mi się układy. Ale
reszta powinna być OK.
> Możliwe, że przekłamanie występuje przy generowaniu napisów na tym
> prostokącie, bo tutaj z kolei trzeba przeliczyć pt (wielkość czcionki)
> na mm.
Punkty czcionki to nie to samo, co pixele. Wielkość punktu typograficznego
może być różna na różnych systemach i zależnie od ustawień systemowych.
Np. na Windows jest to 1/72 cala.
> Zależy mi na tym aby rzeczywisty rozmiar generowanej grafiki był po
> zapisaniu do pliku w skali 1:1 a w progamie dla wygody będę go po
> prostu skalował.
Obrazy w plikach są zapisywane jako tablica pixeli. To, w jakim
rzeczywistym rozmiarze są później wyświetlane, zależy już od rozmiaru
pixela, czyli de facto rozdzielczości monitora. Możesz zapisać w pliku
graficznym, w jakiej rozdzielczości obraz powinien być wyświetlany, by
być w skali 1:1. Niektóre formaty graficzne to umożliwiają.
--
SasQ
Technical Details
Message-ID:
<op.uje4uvz2tgehyw@szczur>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!news.intelink.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!not-for-mailReferences:
<81fd805d-f4ec-4298-8eb1-9002df4bee4d@v53g2000hsa.googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!news.intelink.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!not-for-mail From: SasQ <sasq1@go2.pl> Newsgroups: pl.comp.lang.java Subject: Re: odwzorowanie milimetrów na pixele Date: Wed, 22 Oct 2008 11:05:09 +0200 Organization: Ganz Automyjnia (i przeróbki ;) Lines: 71 Message-ID: <op.uje4uvz2tgehyw@szczur> References: <81fd805d-f4ec-4298-8eb1-9002df4bee4d@v53g2000hsa.googlegroups.com> Reply-To: sasq1@go2.pl NNTP-Posting-Host: awl185.neoplus.adsl.tpnet.pl Mime-Version: 1.0 X-Trace: atlantis.news.neostrada.pl 1224667018 2467 83.27.71.185 (22 Oct 2008 09:16:58 GMT) X-Complaints-To: usenet@news.neostrada.pl NNTP-Posting-Date: Wed, 22 Oct 2008 09:16:58 +0000 (UTC) User-Agent: Opera Mail/9.52 (Linux) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit