Enable High DPI support (#231)

This commit is contained in:
剧毒的KCN 2024-06-23 22:34:03 +08:00 committed by GitHub
parent 3d160f9b90
commit c62b46850c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 39 additions and 0 deletions

View File

@ -352,6 +352,7 @@
<Compile Include="Utils\ArtifactUtils.cs" />
<Compile Include="Utils\Common.cs" />
<Compile Include="Utils\GuiRedirect.cs" />
<Compile Include="Utils\HighDPIUtil.cs" />
<Compile Include="Utils\KeyGo.cs" />
<Compile Include="Utils\HotKeyItem.cs" />
<Compile Include="Utils\HttpHelper.cs" />

View File

@ -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);

View File

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