[問題] 如何取得真實dpi or 螢幕物理大小
因為一些應用
在相同解析度1366*768、不同尺寸10"~14"的螢幕
呈現的畫面大小也會不一樣
所以需要計算螢幕大小反推dpi
忘了使用哪個基本的function跟系統要dpi
都是96dpi,好像這是系統設定font等等的期望值
而不是真實dpi
網路上查了一些資料說是可以用
GetDeviceCaps(GetDC(GetDesktopWindow), VERTSIZE)
from http://ppt.cc/Rtbp
出來的值,跟我用尺直接量測螢幕的物理大小,差蠻多的
有一套軟體可以幾乎精準的取得螢幕的物理大小
想了解是怎麼做到的?
https://dl.dropboxusercontent.com/u/17190710/viewer.png
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.78.236
→
07/12 10:44, , 1F
07/12 10:44, 1F
→
07/12 10:45, , 2F
07/12 10:45, 2F
這個我就不知道要怎麼做了
目前有個線索是好像reg裡面有資訊
但要會拆解
另外一個想法是c#可否得知一個
Graphics graphics = this.CreateGraphics();
充滿全螢幕的物理尺寸大小?
這樣反除解析度就可以取得dpi
----------------------------------------------------------------------
http://blog.csdn.net/morewindows/article/details/8502592
目前查到這篇c++是可以正確取得螢幕大小
不過GetDC(NULL)不知道怎麼改寫為c#版本?
也是在網路上面找到範例
using (System.Drawing.Graphics g
= System.Drawing.Graphics.FromHwnd(IntPtr.Zero))
{
IntPtr hdc = g.GetHdc();
...
}
也是用GetDeviceCaps,抓出來的就錯了
目前猜想是hdc產生方式不對
ps. 不是每台電腦都對,結果跟c#版本一樣...orz
→
07/12 15:04, , 3F
07/12 15:04, 3F
thx, 給了edid這個線索
小弟實在不懂才來請教
http://zh.wikipedia.org/wiki/EDID
66: 水平圖像尺寸 (單位為公釐)
67: 垂直圖像尺寸 (單位為公釐)
這是無法取得嗎
→
07/12 22:19, , 4F
07/12 22:19, 4F
→
07/12 22:19, , 5F
07/12 22:19, 5F
thx sir, 我使用EDID Viewer v4.0.0
得到的資訊非常正確
https://dl.dropboxusercontent.com/u/17190710/rightMM.PNG
410*260 換成16進位為 019A * 0104
參考前面說的在66,67位元
在raw data 找不到匹配的資訊
https://dl.dropboxusercontent.com/u/17190710/RAW.PNG
可以在指點一下嗎?
ps.比照對照,終於找到存在15,16,以公分表示螢幕大小
※ 編輯: Achillean 來自: 61.231.151.104 (07/13 00:49)