Rumah >pembangunan bahagian belakang >C++ >Bagaimana saya boleh membetulkan teks kabur dalam aplikasi Windows Forms saya pada tetapan dpi yang tinggi?

Bagaimana saya boleh membetulkan teks kabur dalam aplikasi Windows Forms saya pada tetapan dpi yang tinggi?

Patricia Arquette
Patricia Arquetteasal
2025-02-03 01:16:09430semak imbas

How Can I Fix Blurry Text in My Windows Forms Application at High DPI Settings?

rendering teks tajam dalam aplikasi windows tinggi-dpi aplikasi

Tetapan DPI Tinggi (150% dan ke atas) boleh menyebabkan teks kabur dalam aplikasi bentuk Windows disebabkan oleh mekanisme skala lalai Windows. Untuk mencapai rendering teks yang jelas, permohonan anda mestilah secara eksplisit mengisytiharkan keserasian DPI yang tinggi. Ini dilakukan dengan mengubahsuai aplikasi manifes atau menggunakan panggilan p/invoke.

kaedah 1: mengubahsuai aplikasi manifes

    Tambahkan "fail manifes aplikasi" baru ke projek anda.
  1. Gantikan kandungan dengan XML berikut:
<code class="language-xml"><?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
  <assemblyIdentity name="MyApplication.app" version="1.0.0.0" />
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
  <application>
    <windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </windowsSettings>
  </application>
</assembly></code>

Kaedah 2: Menggunakan p/invoke untuk penyebaran clickonce

Untuk penyebaran ClickOnce, tambahkan kod berikut ke kaedah

anda: Main()

<code class="language-csharp">[STAThread]
static void Main() {
    if (Environment.OSVersion.Version.Major >= 6) SetProcessDPIAware();
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1()); // Adjust as needed
}

[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern bool SetProcessDPIAware();</code>
Dengan melaksanakan sama ada kaedah, aplikasi anda akan mengendalikan skala tinggi DPI dengan betul, memastikan paparan teks tajam pada skrin resolusi tinggi.

Atas ialah kandungan terperinci Bagaimana saya boleh membetulkan teks kabur dalam aplikasi Windows Forms saya pada tetapan dpi yang tinggi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn