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
Lepaskan: 2025-01-15 10:43:49
asal
851 orang telah melayarinya

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.

[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;
}
Salin selepas log masuk

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 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan