Данный ответ является верным, насколько это возможно. Однако, когда вы установили размер текста более 125%, Windows (и .NET) начинают отображать размер экрана, чтобы выполнить автоматическое масштабирование для вас.
В большинстве случаев это не проблема - обычно вы хотите, чтобы Windows и .NET это делали. Однако в том случае, когда вам действительно необходимо знать фактическое количество пикселей на экране (например, вы хотите рисовать непосредственно на настольном компьютере), вы можете сделать следующее. Я только попробовал это на Win10. YMMV в других версиях Windows.
Пока что это единственный способ получить истинное количество пикселей на экране, если вы не хотите глобально отключать поддержку DPI в своем приложении. Обратите внимание, что этот пример получает основной размер экрана - вам нужно будет изменить его, чтобы получить другие экраны.
[DllImport("User32.dll")]
static extern IntPtr GetDC(IntPtr hwnd);
[DllImport("User32.dll")]
static extern int ReleaseDC(IntPtr hwnd, IntPtr dc);
[DllImport("gdi32.dll")]
static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
IntPtr primary = GetDC(IntPtr.Zero);
int DESKTOPVERTRES = 117;
int DESKTOPHORZRES = 118;
int actualPixelsX = GetDeviceCaps(primary, DESKTOPHORZRES);
int actualPixelsY = GetDeviceCaps(primary, DESKTOPVERTRES);
ReleaseDC(IntPtr.Zero, primary);