(C #) Как получить отношение точки к пикселю для моего экрана?

2

Из того, что я понял, точка отношения к пикселю будет зависеть от разрешения экрана. Итак, как я могу вычислить его во время выполнения в С#?

Спасибо

Теги:
winforms
fonts
gdi+

2 ответа

4

Если вы пытаетесь получить DPI на экране, это немного сложнее. Вам нужно будет создать настоящий объект Graphics и запросить его.

Например, в событии Load вашей основной формы:

using( Graphics g = CreateGraphics() )
{
    _dpiX = g.DpiX;
    _dpiY = g.DpiY; // In practice usually == dpiX
    _points = _dpiX / 72.0f; // There are 72 points per inch
}

Конечно, большинство мониторов лгут о фактическом DPI и всегда возвращают 72 или 96 или когда большие шрифты включены 120. Если вы действительно хотите отобразить физический дюйм на экране, вам придется фактически откалибровать его с помощью пользовательская справка - если они выбирают линию, которую они измеряют, равную 1 дюйму.

  • 0
    Я дошел до _points . Теперь, как бы я _points с pixels ?
0

Все находится в объекте Экран:

int bpp = System.Windows.Forms.Screen.PrimaryScreen.BitsPerPixel;
int wid = Screen.PrimaryScreen.WorkingArea.Width;
int ht = Screen.PrimaryScreen.WorkingArea.Height;

На моей машине он дает:

bpp=32
width=1280
height=740
  • 2
    При работе с объектом Screen всегда имейте в виду, что некоторые пользователи работают с несколькими мониторами. Где-то есть функция, которая возвращает экран, на котором ваше приложение видно в данный момент.
  • 0
    Конечно @ Александр. Спасибо за указание.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню