(C #) Как получить отношение точки к пикселю для моего экрана? - PullRequest
2 голосов
/ 17 июня 2009

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

Спасибо

Ответы [ 2 ]

4 голосов
/ 17 июня 2009

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

Например, в событии 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 голосов
/ 17 июня 2009

Это все на экране объект:

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
...