Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mendapatkan Secara Pemrograman Faktor Penskalaan Paparan Windows dalam C#?

Bagaimana untuk Mendapatkan Secara Pemrograman Faktor Penskalaan Paparan Windows dalam C#?

Mary-Kate Olsen
Lepaskan: 2025-01-15 12:10:43
asal
543 orang telah melayarinya

How to Programmatically Retrieve Windows Display Scaling Factor in C#?

Mengakses Tetapan Paparan Windows dalam C#

Versi Windows 7 dan lebih baru menyediakan tetapan Panel Kawalan yang membolehkan pengguna melaraskan teks dan saiz elemen UI. Pembangun C# selalunya perlu mendapatkan semula tetapan ini untuk tingkah laku aplikasi dinamik.

Penyelesaian Praktikal

Secara langsung menggunakan graphics.DpiX dan DeviceCap.LOGPIXELSX secara tidak dijangka mengembalikan nilai tetap (96 DPI) tanpa mengira penskalaan sebenar. Untuk menentukan faktor penskalaan dengan tepat, pendekatan berbeza diperlukan:

<code class="language-csharp">[DllImport("gdi32.dll")]
static extern int GetDeviceCaps(IntPtr hdc, int nIndex);

public enum DeviceCap
{
    VERTRES = 10,
    DESKTOPVERTRES = 117
}

private float GetScalingFactor()
{
    using (Graphics g = Graphics.FromHwnd(IntPtr.Zero))
    {
        IntPtr desktop = g.GetHdc();
        int logicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.VERTRES);
        int physicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.DESKTOPVERTRES);
        g.ReleaseHdc(desktop);
        return (float)physicalScreenHeight / logicalScreenHeight; // e.g., 1.25 for 125% scaling
    }
}</code>
Salin selepas log masuk

Coretan kod ini memanfaatkan GetDeviceCaps untuk membandingkan ketinggian skrin logik dan fizikal, memberikan faktor penskalaan yang tepat. Hasil daripada 1.25, misalnya, menunjukkan tahap penskalaan 125%.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Secara Pemrograman Faktor Penskalaan Paparan Windows dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan