diff --git a/Source/GrasscutterTools/GrasscutterTools.csproj b/Source/GrasscutterTools/GrasscutterTools.csproj index f1a6b02..9951b4f 100644 --- a/Source/GrasscutterTools/GrasscutterTools.csproj +++ b/Source/GrasscutterTools/GrasscutterTools.csproj @@ -352,6 +352,7 @@ + diff --git a/Source/GrasscutterTools/Program.cs b/Source/GrasscutterTools/Program.cs index 06a487e..834cbb1 100644 --- a/Source/GrasscutterTools/Program.cs +++ b/Source/GrasscutterTools/Program.cs @@ -71,6 +71,12 @@ namespace GrasscutterTools if (result != -1) return result; + // 开启高DPI支持 + if (Environment.OSVersion.Version.Major >= 6) // 至少需要Vista系统 + { + HighDPIUtil.SetDpiAwareness(); + } + Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); diff --git a/Source/GrasscutterTools/Utils/HighDPIUtil.cs b/Source/GrasscutterTools/Utils/HighDPIUtil.cs new file mode 100644 index 0000000..4563dd9 --- /dev/null +++ b/Source/GrasscutterTools/Utils/HighDPIUtil.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace GrasscutterTools.Utils +{ + internal class HighDPIUtil + { + public static void SetDpiAwareness() + { + var dpiAwareness = ProcessDpiAwareness.PerMonitorDpiAware; + var hresult = SetProcessDpiAwareness(dpiAwareness); + if (hresult != 0) + { + throw new System.ComponentModel.Win32Exception(hresult); + } + } + + [DllImport("shcore.dll")] + private static extern int SetProcessDpiAwareness(ProcessDpiAwareness value); + + private enum ProcessDpiAwareness + { + DpiUnaware = 0, + SystemDpiAware = 1, + PerMonitorDpiAware = 2 + } + } +}