本稿では主に2つの問題を解決する
- C#Winform 高 DPIフォントがぼやけています。
- 高 DPI 下ズーム> 100%、UIデザイナーは100%にズームするように指示しています。100%に再起動しないと、デザインのコントロールが飛びます。


テスト手順の確立
- 新規. Net WindowsフォームアプリケーションWinformプロジェクト

- Net 6.0を選択

- 後で適切なズームを検出するために、フォームサイズを1000 x 1000に設定します。

- ボタンを追加150 x 50サイズにして

- 画像ボックスの追加、サイズ300 x 300、右クリックで画像をインポート


- テストコードを追加
namespace WinFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Text = this.Width + "x" + this.Height + " pic "+ pictureBox1.Width + "x" + pictureBox1.Height + 启动环境();
}
public static string 启动环境()
{
#if NET461
return (".NET Framework 4.6.1");
#elif NET6_0
return (".NET6");
#endif
}
}
}
- 看

正式に始まる。
- 右键工程,添加应用程序清单
app.manifest, 文件名用默认,修改

この段落の注釈を解除して、認識DPIを開く
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
</windowsSettings>
</application>
- プロジェクト名をダブルクリックプロファイルを編集するプロジェクト名をダブルクリックするプロファイルを編集する
TargetFrameworks 改为双目标框架 <TargetFrameworks>net6.0-windows;net461;</TargetFrameworks> , 保存后提示重载工程 , 最好是关闭 vs 再打开一次.
全文は以下。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFrameworks>net6.0-windows;net461;</TargetFrameworks>
<UseWindowsForms>true</UseWindowsForms>
<ApplicationManifest>app.manifest</ApplicationManifest>
<ApplicationVisualStyles>true</ApplicationVisualStyles>
<ApplicationUseCompatibleTextRendering>false</ApplicationUseCompatibleTextRendering>
<ApplicationHighDpiMode>SystemAware</ApplicationHighDpiMode>
</PropertyGroup>
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
</Project>
- コントロールが見つからないというメッセージが表示された場合、Form1. Designer.csおよびForm1.csで追加
using System;
using System.Windows.Forms;
Program.cs注释掉ApplicationConfiguration.Initialize();运行选择
net461
注画面は2800 x 1800、175%の拡大/縮小

案の定表示サイズが正しくありません

- Form1.cs 'AutoScaleMode = AutoScaleMode.Dpi;'を追加します。
public Form1()
{
AutoScaleMode = AutoScaleMode.Dpi; //添加这句,要在'InitializeComponent();'上方
InitializeComponent();
}
再び実行する。

完璧だ!
- ダブルクリックしてフォームを編集、プロンプトなしで100%ズーム、標準メニューとDataGridViewテストを追加

** Perfect! 2倍の喜び!!
まとめまとめまとめ
- 新規. Net WindowsフォームアプリケーションWinformプロジェクト[. Net6.0]
- 添加应用程序清单
app.manifest, 打开感知 DPI TargetFrameworks改为双目标框架<TargetFrameworks>net6.0-windows;net461;</TargetFrameworks>Program.cs注释掉ApplicationConfiguration.Initialize();AutoScaleMode = AutoScaleMode.Dpi;//添加这句,要在'InitializeComponent();'上方
老工程也可以通过编projetファイル升进到这种新工程格式,支持本文说的机能,需要继续出教程的请在评论区伝言,这几天都在休暇中,今日就书写这里了。またね!
*** デモ **