Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

"Конвертация DLU в пиксели в Delphi для Win32"

Delphi , Компоненты и Классы , Модули

Конвертация DLU в пиксели в Delphi для Win32

Microsoft использует диалоговые длины единиц (DLU) в своих руководствах по пользовательскому интерфейсу. Как можно конвертировать их в пиксели в Delphi для Win32?

Диалоговые длины единиц (DLU) основаны на размере системного шрифта. Чтобы выполнить такую конвертацию в Delphi для Win32, можно использовать функцию MapDialogRect().

Функция MapDialogRect() принимает структуру RECT в диалоговых единицах и возвращает эквивалентную структуру RECT в пиксельных единицах. Важно отметить, что для выполнения конвертации функция нуждается в контексте диалога, а именно в обработке диалога.

Пример кода на Object Pascal (Delphi) для конвертации DLU в пиксели:

procedure ConvertDLUtoPixels(const DLU: TRect; var Pixels: TRect);
var
  DialogRect: TRect;
begin
  DialogRect := DLU;
  MapDialogRect(Handle, DialogRect);
  Pixels := TRect.Create(DialogRect.Left * GetSystemMetrics(SM_CXDLGFRAME) div 4,
                        DialogRect.Top * GetSystemMetrics(SM_CYDLGFRAME) div 8,
                        DialogRect.Right * GetSystemMetrics(SM_CXDLGFRAME) div 4,
                        DialogRect.Bottom * GetSystemMetrics(SM_CYDLGFRAME) div 8);
end;

Пример кода на Object Pascal (Delphi) для конвертации пикселей в DLU:

procedure ConvertPixelsToDLU(const Pixels: TRect; var DLU: TRect);
var
  DialogRect: TRect;
begin
  DialogRect := Pixels;
  MapDialogRect(Handle, DialogRect);
  DLU := TRect.Create(DialogRect.Left * 4 div GetSystemMetrics(SM_CXDLGFRAME),
                      DialogRect.Top * 8 div GetSystemMetrics(SM_CYDLGFRAME),
                      DialogRect.Right * 4 div GetSystemMetrics(SM_CXDLGFRAME),
                      DialogRect.Bottom * 8 div GetSystemMetrics(SM_CYDLGFRAME));
end;

Если у вас нет диалогового окна, но вам все равно нужно конвертировать DLU в пиксели, вы можете использовать метод, описанный в статье How To Calculate Dialog Base Units with Non-System-Based Font.

Однако, если вам не нужно конвертировать DLU в пиксели, а просто нужно гарантировать, что ваши формы правильно масштабируются в зависимости от текущего масштабирования шрифта, вы можете использовать встроенное масштабирование форм в Delphi.

Создано по материалам из источника по ссылке.

Описание контекста: "Описание процесса конвертации диалоговых длины единиц (DLU) в пиксели в Delphi для Win32 с использованием функции MapDialogRect() и примеры кода на Object Pascal (Delphi) для конвертации DLU в пиксели и наоборот".


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Модули ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:45:40/0.005277156829834/1