A kijelző méretéhez a következőt kell használnia: Screen
.PrimaryScreen.Bounds.Size
(vagy Screen.GetBounds(myform)
).
Ha DPI-t szeretne, használja a DpiX és DpiY tulajdonságai http://msdn.microsoft.com/en-us/library/system.drawing.graphics.aspx" rel="noreferrer">Grafika:
PointF dpi = PointF.Empty;
using(Graphics g = this.CreateGraphics()){
dpi.X = g.DpiX;
dpi.Y = g.DpiY;
}
Ó várj! Azt akartad, hogy valódi, tarts egy vonalzót a monitorhoz, és mérj, méretet?! Nem. Nem lehetséges bármely operációs rendszer szolgáltatás használatával. Az operációs rendszer nem ismeri a monitor tényleges méreteit, sem azt, hogy a felhasználó hogyan kalibrálta. Ezen információk egy része elméletileg kimutatható, de nem elég determinisztikus ahhoz, hogy az operációs rendszer megbízhatóan használja, ezért nem.
Kerülendő megoldásként kipróbálhat néhány dolgot.
- Megpróbálhatja lekérdezni a telepített monitor eszköz megjelenítési karakterláncát (nem tudom, hogyan kell ezt megtenni), és megnézheti, hogy abból ki lehet-e elemezni egy értelmes méretet. Például lehet, hogy a monitor egy "ValueBin E17p", és ebből lehet kikövetkeztetni, hogy 17"-es monitor. Természetesen ez a megjelenítési karakterlánc valószínűleg "Plug and Play Monitor". Ez a séma a legjobb esetben is meglehetősen vázlatos.
- Megkérdezheti a felhasználót, hogy milyen méretű monitorral rendelkezik. Talán tudni fogják.
Ha már ismeri (vagy gondolja), hogy ismeri a monitor átlójának méretét, meg kell találnia a fizikai képarányát. Még egyszer, egy-két dolog:
- Tegyük fel, hogy az aktuális képpont-arány megegyezik a monitor fizikai képarányával. Ez azt feltételezi, hogy (A) a felhasználó olyan felbontást választott, amely ideális a monitorjához, és (B) a monitor négyzetes pixelekkel rendelkezik. Nem tudok olyan jelenlegi fogyasztó-orientált számítógép-monitorról, amiben ne lenne négyzetes pixel, de a régebbieken igen, az újabbakon viszont igen.
- Kérdezze meg a felhasználót. Talán tudni fogják.
Ha ismeri (vagy gondolja, tudja), hogy mekkora a monitor átlós mérete és fizikai képaránya, akkor kiszámíthatja a fizikai szélességét és magasságát. A2 + B2 = C2, így néhány számítással jó lesz:
Ha rájött, hogy ez egy 17 hüvelykes monitor, és a jelenlegi felbontása 1280 x 1024:
12802 + 10242 = 2686976
Sqrt(2686976 ) = 1639.1998047828092637409837247032
17" * 1280 / 1639.2 = 13.274768179599804782820888238165" *9 = 138165" *9 = 13,9" *9 = 13,9" *9 = 13,9" 14543679843826256710590532"
Ezzel a fizikai szélesség 13,27 hüvelyk, a fizikai magasság pedig 10,62 hüvelyk. Így a pixelek mérete 13,27" / 1280 = 10,62" / 1024 = 0,01037" vagy körülbelül 0,263 mm.
Természetesen mindez érvénytelen, ha a felhasználó nem rendelkezik megfelelő felbontással, a monitor nem négyzet alakú pixelekkel rendelkezik, vagy régebbi analóg monitorról van szó, és a kezelőszervek nincsenek megfelelően beállítva, hogy a kijelző kitöltse a teljes fizikai területet. képernyő. Vagy ami még rosszabb, lehet projektor is.
Végül talán a legjobb, ha egy kalibrálási lépést hajt végre, ahol a felhasználó valójában a képernyőhöz tart egy vonalzót, és megméri valami méretét. Te tudnál:
- Kérje meg a felhasználót, hogy kattintson az egérrel bármelyik két, egymástól hüvelyknyi (vagy centiméteres) pontra.
- Rajzoljon egy négyzetet a képernyőre, és kérje meg a felhasználót, hogy a fel és le nyilak megnyomásával állítsa be a magasságát, a bal és jobb nyilat pedig a szélességének beállításához, amíg a doboz pontosan egy hüvelykes (vagy centiméteres) négyzet lesz a vonalzójuk szerint.
- Rajzoljon egy dobozt a képernyőre, és kérje meg a felhasználót, hogy mondja meg, hány hüvelyk/centiméter az egyes dimenziókban.
Bármit csinál is, ne várja el, hogy az eredmények 100%-ban pontosak legyenek. Túl sok tényező játszik szerepet az Ön (vagy a felhasználó) számára ahhoz, hogy ez minden alkalommal pontosan helyes legyen.
Ne feledje, hogy a 96 dpi általában elég közel van a pontossághoz. A nem vetített képernyőkön a modern pixelek általában körülbelül 0,25 mm-esek, adok vagy vesznek, így általában körülbelül 100 fizikai pixel hüvelykenként, adj vagy veszel, ha a monitor a megfelelőre van állítva. natív felbontás. (Természetesen ez egy hatalmas általánosítás, és nem vonatkozik minden monitorra. Az Eee PC-k például körülbelül 0,19 mm-es pixelekkel rendelkeznek, ha jól emlékszem a specifikációkra.)
07.01.2009