是否可以獲取特定顯示器的DPI值?每臺顯示器的WPF DPI值
我已經嘗試了所有聯機的方法,但它們總是返回主監視器的值。
實例,我已經使用:
例1
using (Graphics g = Graphics.FromHwnd(IntPtr.Zero))
{
dpiX = g.DpiX;
dpiY = g.DpiY;
}
示例2
PresentationSource source = PresentationSource.FromVisual(this);
double dpiX, dpiY;
if (source != null) {
dpiX = 96.0 * source.CompositionTarget.TransformToDevice.M11;
dpiY = 96.0 * source.CompositionTarget.TransformToDevice.M22;
}
示例3
var dpiXProperty = typeof(SystemParameters).GetProperty("DpiX", BindingFlags.NonPublic | BindingFlags.Static);
var dpiYProperty = typeof(SystemParameters).GetProperty("Dpi", BindingFlags.NonPublic | BindingFlags.Static);
var dpiX = (int)dpiXProperty.GetValue(null, null);
var dpiY = (int)dpiYProperty.GetValue(null, null);
沒有上述工程於特定顯示器
我對此不完全確定,這就是爲什麼我僅將它置於評論中:恐怕您從Windows獲得的DPI值可能是指在Windows中配置的DPI設置,而不是硬件的實際DPI功能,因此這意味着它是全局性的。它只是幫助應用程序知道要繪製多少個像素,以使其顯示爲一英寸長。而且,獲得硬件的實際DPI可能非常困難,如果不是不可能的話。但讓我們看看其他人是否知道更好。 –
,但您可以爲不同的顯示器指定不同的縮放比例,以便您擁有不同的DPI。 http://jmp.sh/CJLjx2s – gmetax
我沒有訪問W10,所以我無法驗證這一點。要麼它不會在不同的顯示器上設置不同的比例,要麼它設置的比例不是DPI,或者在某些我不知道的地方有一些額外的設置。 –