В общем, проблема состоит в том, чтобы использовать две разные «константы» для макета формы, а затем изменить одну из этих констант без изменения другой.
Вы используете пиксели для объектов формы и точки (в основном, дюймы), чтобы указать размер шрифта. Пиксели и точки связаны DPI, поэтому вы меняете DPI, и ваши фиксированные значения в пикселях неожиданно не совпадают с фиксированными значениями точек.
Для этого есть пакеты и классы, но в конце дня вы должны выбрать одну или другую единицу или масштабировать одну из единиц в соответствии с изменяющейся константой.
Лично я бы изменил сущности в форме на дюймы. Я не специалист по C #, поэтому я не знаю, поддерживается ли это изначально или вам нужно выполнить динамическое изменение размера формы при запуске приложения.
Если вам нужно сделать это в своем программном обеспечении, тогда продолжайте и измеряйте все как обычно (скажем, к вашему обычному 96 DPI).
Когда ваше приложение запускается, убедитесь, что система имеет 96 DPI, прежде чем показывать свои формы. Если это так, отлично. Если нет, то установите переменную с поправочным коэффициентом, а затем масштабируйте и переводите (изменяйте как местоположение, так и размер) каждого объекта, прежде чем показывать форму.
Однако, в конечном итоге, можно указать все в дюймах или точках (точка составляет 1/72 дюйма) и позволить ОС справиться с этим. Возможно, вам придется иметь дело с угловыми случаями (внешний экран с правильно установленным DPI будет показывать ваше приложение в нескольких пикселях ...)