適配各類Windows分辨率,爲DPI添加感知,當在高DPI時,禁用WINFORM縮放等。

由於如今高分屏愈來愈多,不少windows設備必須設置高DPI,這樣很容易致使WINFORM總體錯位,所以咱們須要本身適配。禁止縮放windows

 

在程序配置清單 mainfest中添加以下。app

<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>

其中dpiAware節點參數MSDN解釋以下,各取所需吧。函數

False -- Sets the application to not DPI-aware.
True -- Sets the application to system DPI–aware.
Per-monitor -- On Windows 8.1, sets the application to per monitor-DPI aware. On Windows Vista through Windows 8, sets the application to not DPI–aware.
True/PM -- On Windows 8.1, sets the application to per monitor-DPI aware. On Windows Vista through Windows 8, sets the application to system-DPI aware.

注意這個紅字部分,有的人自動生成mainfest以後不會添加這個節點,其實只要在第一行添加這個紅字部分就好了spa

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >

第一行改爲這樣就好了code

<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">

其次上面只是設置了感知,你要具體去改,在構造函數中,組建生成以前 添加如文字感知:xml

 Font = new Font(Font.Name, 8.25f * 96f / CreateGraphics().DpiX, Font.Style, Font.Unit, Font.GdiCharSet, Font.GdiVerticalFont);
            InitializeComponent();

這樣基本上你的窗體就不會被縮放了。blog

相關文章
相關標籤/搜索