Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mendapatkan Tetapan Penskalaan Paparan Windows Secara Pengaturcaraan?

Bagaimanakah Saya Boleh Mendapatkan Tetapan Penskalaan Paparan Windows Secara Pengaturcaraan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-15 10:43:49791semak imbas

How Can I Programmatically Retrieve Windows Display Scaling Settings?

Tentukan tetapan paparan Windows secara berprogram

Dalam Windows 7 dan ke atas, pengguna boleh melaraskan parameter paparan, seperti saiz teks, dalam Panel Kawalan. Mengakses tetapan ini berguna untuk mendayakan atau melumpuhkan fungsi aplikasi berdasarkan keutamaan pengguna.

Bolehkah tetapan paparan ini diambil semula secara pengaturcaraan?

Ternyata kedua-dua sifat graphics.DpiX dan DeviceCap.LOGPIXELSX mengembalikan nilai konsisten 96 pada peranti Surface Pro tanpa mengira tahap zum. Untuk mengira faktor penskalaan dengan tepat, pendekatan lain diperlukan.

Kaedah yang berkesan ialah menggunakan fungsi gdi32.dll dalam GetDeviceCaps. Dengan mengukur ketinggian skrin logik dan fizikal kita boleh menentukan faktor penskalaan skrin.

<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);

    float ScreenScalingFactor = (float)PhysicalScreenHeight / (float)LogicalScreenHeight;

    return ScreenScalingFactor;
}</code>

Dengan memanggil fungsi ini, kami boleh mendapatkan faktor penskalaan skrin dengan tepat, membolehkan kami melaraskan gelagat aplikasi dengan sewajarnya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Tetapan Penskalaan Paparan Windows Secara Pengaturcaraan?. 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