Devo trovarti se l'utente utilizza una dimensione del carattere ingrandita del 125% o del 150% in Win 7
-
27-10-2019 - |
Domanda
Qualcuno sa se posso controllare questo parametro ovunque?
Soluzione
Puoi leggere Graphics.DpiX
per discernere questo.
Moltiplica Graphics.DpiX
per 100 e dividi per 96 e otterrai il ridimensionamento percentuale dei caratteri.Questo è vero perché il 100% di scala dei caratteri equivale a 96 dpi.
Tieni presente che se la tua applicazione non è contrassegnata come Rilevante DPI , quindi quando l'utente imposta il ridimensionamento dei caratteri al 150%, la proprietà DpiX
riporterà 96. In alto non so se le app WinForms standard siano contrassegnate come sensibili ai DPI.
Altri suggerimenti
Se non stai utilizzando C #, devi eseguire due passaggi per farlo funzionare in Windows 7.
Innanzitutto, rendi la tua applicazione compatibile con DPI. Questo blog spiega come farlo.Implica la modifica del manifesto dell'applicazione o la chiamata a SetProcessDPIAware () (che può o non può esistere).
Successivamente, ottieni i valori DPI X / Y rispettivamente con GetDeviceCaps(hdc, LOGPIXELSX)
e GetDeviceCaps(hdc, LOGPIXELSY)
, come spiegato in questo articolo MSDN .
Ho un'applicazione che in precedenza non era a conoscenza dei DPI, ma si è comunque guastata se utilizzata con il ridimensionamento del testo (come disponibile nel pannello di controllo "Schermo" di Windows 7) e questo l'ha fatta funzionare, senza avere alcun effetto su Windows 8o più recente.