Привязать к сетке в миллиметрах на панели? - PullRequest
0 голосов
/ 18 июня 2010

У меня есть панель. Мне нужно представить это в WYSIWYG .

Теперь, когда рисунок на нем, можно рисовать, используя миллиметры вместо пикселей.

graphics.PageUnit = GraphicsUnit.Millimeter
graphics.DrawRectangle(pen,rect)

Можно ли позиционировать элементы управления (кнопки, текстовые поля) также в миллиметрах, чтобы получить «реальное» бумажное изображение панели?

В VB6 это было возможно. Является ли .NET шагом назад или VB6 просто использует приближение, которое мы не хотим использовать в .NET?

Ответы [ 3 ]

1 голос
/ 18 июня 2010

Проще говоря, я не верю, что это возможно без выполнения конкретной математики для каждого поддерживаемого вами монитора.

DPI обычно используется для печати и полезен для измерений на бумаге. Однако измерения на мониторе не гарантируются, так как вы можете изменить разрешение в любое время и при этом иметь тот же DPI (обычно 96). Помимо этого вам также необходимо учитывать размер монитора.

Что вам нужно знать, это Пиксельная плотность , или PPI, для вашего конкретного монитора. Я не верю, что это может быть достигнуто, хотя другие могут исправить меня, если я ошибаюсь.

0 голосов
/ 23 июня 2010
0 голосов
/ 18 июня 2010

Попробуйте это:

var dpiX = Graphics.DpiX;//horizontal
var dpiY = Graphics.DpiY;//vertical

var mmX = (width_in_pixles * 25.4 ) / dpiX;
var mmY = (height_in_pixles * 25.4) / dpiY;

Имеется 25,4 мм на 1 дюйм, поэтому с помощью приведенных выше формул вы можете рассчитать высоту и ширину элементов управления в мм, а также скорректировать их положение.

...