unit DpiUtils; { DpiUtils.pas — общий пересчёт «дизайн-пикселей» в реальные экранные. Вся UI-раскладка приложения (кастомные Flat*-контролы и окна, построенные кодом — SettingsForm, DeviceForm) написана литеральными пикселями под неявные 96 DPI. DpiScale переводит такое значение в пиксели текущего монитора: на 96 DPI (обычный десктоп, Windows 100%) возвращает V без изменений; на более высоком DPI (Windows 125/150/200%, HiDPI-десктопы) масштабирует пропорционально — тот же приём, что и для стандартных Windows-контролов (MulDiv), но управляемый вручную, т.к. вся раскладка строится кодом, а не читается из .lfm (там масштабирование сделал бы LCL сам через DesignTimePPI). } {$IFDEF FPC} {$MODE Delphi} {$ENDIF} interface uses Forms, LCLType; function DpiScale(V: Integer): Integer; implementation function DpiScale(V: Integer): Integer; begin Result := MulDiv(V, Screen.PixelsPerInch, 96); if (V > 0) and (Result < 1) then Result := 1; end; end.