VS 2022 Winformの高DPI互換プログラムを設計

VS 2022 Winformの高DPI互換プログラムを設計

高DPI下ズーム> 100%、UIデザイナーは100%にズームするように指示しています。100%に再起動しないと、デザインのコントロールが飛びます。

最后更新 2022/05/14 12:02
AlexChow
预计阅读 3 分钟
分类
Winform
标签
.NET Winform UIのデザイン Visual Studio

本稿では主に2つの問題を解決する

  • C#Winform 高 DPIフォントがぼやけています。
  • 高 DPI 下ズーム> 100%、UIデザイナーは100%にズームするように指示しています。100%に再起動しないと、デザインのコントロールが飛びます。

テスト手順の確立

  1. 新規. Net WindowsフォームアプリケーションWinformプロジェクト

  1. Net 6.0を選択

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

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

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

  1. テストコードを追加
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
        }

    }
}

正式に始まる。

  1. 右键工程,添加应用程序清单 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>
  1. プロジェクト名をダブルクリックプロファイルを編集するプロジェクト名をダブルクリックするプロファイルを編集する

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>
  1. コントロールが見つからないというメッセージが表示された場合、Form1. Designer.csおよびForm1.csで追加
using System;
using System.Windows.Forms;
  1. Program.cs注释掉 ApplicationConfiguration.Initialize();

  2. 运行选择 net461

注画面は2800 x 1800、175%の拡大/縮小

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

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

再び実行する。

完璧だ!

  1. ダブルクリックしてフォームを編集、プロンプトなしで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ファイル升进到这种新工程格式,支持本文说的机能,需要继续出教程的请在评论区伝言,这几天都在休暇中,今日就书写这里了。またね!

*** デモ **

Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2024/02/29

Winformでもデータを表示できます。

winform開発の過程では、しばしばデータ表示機能を行う必要がありますが、以前はグリッドコントロールを使用していましたが、今日は例を通じて、Winform Blazorハイブリッドでant Design Blazorテーブルコンポーネントを使用してデータ表示を行う方法を紹介します。

继续阅读
同分类 / 同标签 2024/02/29

Winformのインターフェースも良く見えますか?

先日、winformでBlazorハイブリッドを使用することを紹介しましたが、Blazor UIを使用するとwinformプログラムがより良く見えるようになると述べました。次に、winform Blazorハイブリッドで描画する例を示したいと思います。

继续阅读