Forzare il ridimensionamento DPI in stile XP attraverso un'applicazione VB 2010?


1

Ho un'app in vb.net 2010. su una macchina Windows 7, l'interfaccia utente appare ok fino a 120 dpi (125%) poiché Windows 7 per impostazione predefinita abilita il "ridimensionamento dpi stile xp" per valori dpi uguali o inferiori a 120. per valori> 120 dpi gli oggetti dell'interfaccia utente diventano disallineati e sfocati a meno che l'utente non controlli (abilita) manualmente l'opzione "ridimensionamento dpi stile xp" nelle impostazioni di visualizzazione. per lo stesso motivo, ".DpiX" restituisce il numero corretto per <= 120 dpi, mentre restituisce 96 per qualsiasi valore> 120 dpi, a meno che, di nuovo, non abiliti manualmente tale opzione.

Mi chiedo se esiste un modo * ad esempio, tramite manifest) per forzare Windows a utilizzare il ridimensionamento dpi in stile XP per ogni valore dpi?


ho appena scoperto che ciò che effettivamente fa "ridimensionamento dpi in stile xp" è disabilitare la "virtualizzazione dpi". quindi, sto fondamentalmente cercando un modo per disabilitare la virtualizzazione dpi tramite il mio codice / manifest.
Ali,

Risposte:


0

Prova a utilizzare la seguente impostazione nel tuo manifest

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>
</assembly>

Se desideri modificare le impostazioni di Windows, dovrai manipolare la HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontDPIchiave di registro.

Se il ridimensionamento dei caratteri è fondamentale per l'applicazione, prendere in considerazione il rendering del proprio testo e ridimensionarlo utilizzando ScaleTransform


grazie hanxue. ma ci avevo provato prima e ho ottenuto gli stessi risultati. penso che il tuo commento riguardi la dichiarazione dell'app in grado di riconoscere dpi, mentre il mio problema è dovuto alla virtualizzazione dpi.
Ali,

@Ali anche cambiando la chiave di registro per far sì che Windows usi il ridimensionamento dpi in stile xp non funziona?
hanxue,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.