Параметр Windows DPI влияет на Graphics.DrawString

Я создал новый объект Bitmap и теперь хочу нарисовать на нем текст с помощью GDI +. Поэтому я вызываю Graphics.DrawString (...).

Проблема в том, что размер строки зависит от настроек DPI Windows 7. Есть ли способ сделать мой текстовый рисунок независимым от настроек Windows?

PS: Кажется, что настройки DPI влияют только на текст. Прямоугольник, например, имеет тот же размер при изменении DPI ...


person Boris    schedule 29.05.2012    source источник


Ответы (2)


Только что нашел решение сам: ключ в том, чтобы создать шрифт с параметром GraphicsUnit.Pixel. Таким образом, отрисовка строк не зависит от системных настроек DPI.

person Boris    schedule 29.05.2012
comment
Вы спасли день - person James Westgate; 05.05.2021

Вы правы в том, что DPI влияет только на элементы, которые можно рисовать, которые измеряются в единицах, не зависящих от устройства. Шрифты обычно измеряются в точках, где 1 пункт = 1/72 дюйма. Таким образом, шрифт размером 10 пунктов будет иметь одинаковый размер в ДЮЙМАХ для каждого разрешения экрана и будет занимать больше или меньше пикселей в зависимости от разрешения экрана и плотности пикселей.

Все, что измеряется в пикселях (например, линии, формы и т. Д.), Не зависит от DPI, но фактический физический размер будет зависеть от разрешения экрана и плотности пикселей. Изменение кода для измерения шрифтов в пикселях действительно гарантирует, что размер текста в пикселях будет одинаковым для всех настроек DPI экрана, но если вы должны были печатать на принтере, вы обнаружите, что размер текста будет варьироваться в зависимости от разрешения принтера.

person pdriegen    schedule 29.05.2012