Ho bisogno di ottenere la scala DPI, come impostata da Pannello di controllo> Schermo, per ciascuna delle schermate collegate al computer, anche quelle che non hanno una finestra WPF aperta. Ho visto un certo numero di modi per ottenere DPI (ad esempio, http://dzimchuk.net/post/Best-way-to-get-DPI-value-in-WPF) ma questi sembrano essere dipendenti da Graphics.FromHwnd(IntPtr.Zero)
o da PresentationSource.FromVisual(visual).CompositionTarget.TransformToDevice
.Come ottenere la scala DPI per tutti gli schermi?
C'è un modo per ottenere le impostazioni DPI per ogni singola schermata?
Sfondo: sto creando un editor di configurazione del layout in modo che l'utente possa configurare la propria configurazione prima dell'avvio. Per questo, disegno ognuna delle schermate l'una rispetto all'altra. Per una configurazione utilizziamo un display 4K con un set di scale DPI più grande del valore predefinito. Si sta disegnando molto più piccolo di quanto appare fisicamente in relazione agli altri schermi perché riporta la stessa risoluzione degli altri schermi.
È sufficiente creare una finestra fittizia su ogni schermata e acquisire le informazioni in questo modo? –
Si potrebbe andare con il commento precedente, altrimenti sarà necessario enumerare i dispositivi di visualizzazione e ottenere DPI in questo modo. – Kcvin
Windows ora supporta DPI per schermo, a partire da 8.1. È probabile che tu lo incontri in una configurazione in cui hai un costoso display "retina" e un altro normale, di solito un proiettore. Backgrounder per WPF [è qui] (https://msdn.microsoft.com/en-us/library/windows/desktop/ee308410%28v=vs.85%29.aspx). –