提高 OpenFileDialog() 的分辨率
Improve Resolution of OpenFileDialog()
我正在编写一个简单的 Winforms 程序,它使用一个浏览按钮,允许用户使用 OpenFileDialog() select 一个文件,但是显示的文件资源管理器的分辨率很高 pixelated/low .
查看 OpenFileDialog 属性除了可能的 属性 称为 AutoUpgradeEnabled 之外没有任何帮助,但这似乎对解决方案没有任何帮助。
问题并不严重,但它使程序看起来不那么专业,而且我已经看到类似的浏览功能在其他程序上具有更好的分辨率,我知道可以提供更高分辨率的资源管理器选项(但是这可能与其他编程语言有关。
我目前用来获取文件名的代码如下:
public static string GetFile(string path) {
OpenFileDialog fileExplorer = new OpenFileDialog();
fileExplorer.Multiselect = false;
fileExplorer.InitialDirectory = path;
if (fileExplorer.ShowDialog() == DialogResult.OK) {
return fileExplorer.SafeFileName;
}
}
我正在查看的屏幕具有高 DPI 和 1980x1080p 屏幕,我目前使用的是 Windows 10 机器 - 更新 1809。
A picture showing the clear contrast between standard (right) and the Winforms version (left)
如发现的已发布答案所示 here,该解决方案可以提高 winforms 进程的分辨率,显着改善程序的整体外观
解决方案有效,主要程序代码类似于以下内容:
static class Program
{
[STAThread]
static void Main()
{
if (Environment.OSVersion.Version.Major >= 6) SetProcessDPIAware();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern bool SetProcessDPIAware();
}
我正在编写一个简单的 Winforms 程序,它使用一个浏览按钮,允许用户使用 OpenFileDialog() select 一个文件,但是显示的文件资源管理器的分辨率很高 pixelated/low . 查看 OpenFileDialog 属性除了可能的 属性 称为 AutoUpgradeEnabled 之外没有任何帮助,但这似乎对解决方案没有任何帮助。
问题并不严重,但它使程序看起来不那么专业,而且我已经看到类似的浏览功能在其他程序上具有更好的分辨率,我知道可以提供更高分辨率的资源管理器选项(但是这可能与其他编程语言有关。
我目前用来获取文件名的代码如下:
public static string GetFile(string path) {
OpenFileDialog fileExplorer = new OpenFileDialog();
fileExplorer.Multiselect = false;
fileExplorer.InitialDirectory = path;
if (fileExplorer.ShowDialog() == DialogResult.OK) {
return fileExplorer.SafeFileName;
}
}
我正在查看的屏幕具有高 DPI 和 1980x1080p 屏幕,我目前使用的是 Windows 10 机器 - 更新 1809。
A picture showing the clear contrast between standard (right) and the Winforms version (left)
如发现的已发布答案所示 here,该解决方案可以提高 winforms 进程的分辨率,显着改善程序的整体外观
解决方案有效,主要程序代码类似于以下内容:
static class Program
{
[STAThread]
static void Main()
{
if (Environment.OSVersion.Version.Major >= 6) SetProcessDPIAware();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern bool SetProcessDPIAware();
}