Мне нужно преобразовать пиксели в точки на С #. Я видел несколько сложных объяснений по этой теме, но не могу найти простой формулы. Предположим, стандартное 96 точек на дюйм, как мне рассчитать это преобразование?
126
Есть 72 точки на дюйм ; если достаточно предположить 96 пикселей на дюйм, формула довольно проста:
точки = пикселей * 72/96
Есть способ получить настроенные пиксели на дюйм вашего дисплея в Windows с помощью GetDeviceCaps
. У Microsoft есть руководство под названием «Разработка приложений с поддержкой DPI». , найдите раздел «Создание шрифтов с поддержкой DPI».
W3C определил размер пикселя px
как ровно 1/96 от 1 дюйма независимо от фактического разрешения вашего дисплея, поэтому приведенная выше формула должна быть полезна для любой работы в Интернете.
Попробуйте это, если ваш код находится в форме:
источник
Предположение, что 96 точек на дюйм - огромная ошибка. Даже если предположение верно, есть возможность масштабировать шрифты. Таким образом, шрифт, установленный на 10 пунктов, на самом деле может отображаться так, как если бы он был 12,5 пунктов (125%).
источник
Начиная с данного:
Если вы хотите найти точки (pt) на основе пикселей (px):
Перегруппировка:
так:
источник
WPF преобразует точки в пиксели с помощью System.Windows.FontSizeConverter. FontSizeConverter использует System.Windows.LengthConverter. LengthConverter использует коэффициент 1,333333333333333333 для преобразования точек (p) в пиксели (x): x = p * 1,3333333333333333
источник
System.Drawing.Graphics имеет свойства DpiX и DpiY. DpiX - это количество пикселей на дюйм по горизонтали. DpiY - это количество пикселей на дюйм по вертикали. Используйте их для преобразования точек (72 точки на дюйм) в пиксели.
Пример: 14 точек по горизонтали = (14 * DpiX) / 72 пикселя
источник
Конечно, весь этот вопрос должен быть таким:
«Как мне получить горизонтальный и вертикальный PPI (пикселей на дюйм) монитора?»
В дюйме 72 точки (по определению «точка» определяется как 1/72 дюйма, аналогично «пика» определяется как 1/72 дюйма). С помощью этих двух битов информации вы можете очень легко конвертировать из px в pt и обратно.
источник
На самом деле это должно быть
источник
точки = (пикселей / 96) * 72 на стандартной машине XP / Vista / 7 (заводские настройки по умолчанию)
точки = (пикселей / 72) * 72 на стандартном Mac под управлением OSX (заводские настройки по умолчанию)
Windows по умолчанию работает с разрешением 96 точек на дюйм (дисплей). Mac по умолчанию работает с разрешением 72 точки на дюйм (дисплей).
72 пункта POSTSCRIPT = 1 дюйм 12 пунктов POSTSCRIPT = 1 POSTSCRIPT Pica 6 POSTSCRIPT Picas = 72 точки = 1 дюйм
1 балл = 1⁄72 дюйма = 25,4⁄72 мм = 0,3527 мм
DPI = точек на дюйм PPI = пикселей на дюйм LPI = линий на дюйм
Дополнительная информация при использовании em для измерения
16px = 1em (по умолчанию для обычного текста) 8em = 16px * 8 пикселей / 16 = em
источник
Это работает:
источник
Использование wxPython на Mac для получения правильного DPI следующим образом:
Это дает:
x-DPI: 72 y-DPI: 72
Таким образом, формула:
точки: int = (pixelNumber * 72) // 72
источник
Высота линий преобразована в точки и пиксели (моя собственная формула). Вот пример с ручным вводом 213,67 пункта в поле Высота строки:
Здесь ручной ввод 213,67 точек дает 284 пикселей.
Здесь ручной ввод 213,68 точек дает 285 пикселей.
(Почему 0,45? Не знаю, но работает.)
источник