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

# Получение списка шрифтов GDI+ в Delphi 2009 для Win32

Delphi , Графика и Игры , Шрифты

Вопрос, поставленный в контексте, заключается в том, как получить список шрифтов GDI+ в среде разработки Delphi 2009 для Win32. Дополнительный вопрос касается наличия диалога выбора шрифтов, который мог бы отображать только шрифты GDI+, и желательно, чтобы метод был применим и в среде Lazarus.

Прежде чем перейти к ответу, стоит уточнить, что подразумевается под шрифтами GDI+. GDI+ (Graphics Device Interface Plus) - это расширение стандартного GDI, которое обеспечивает более широкие возможности для работы с графикой в операционных системах Windows, включая поддержку векторных шрифтов, таких как TrueType и OpenType.

Подтвержденный ответ

Для получения списка шрифтов GDI+ в Delphi 2009 можно использовать следующий подход:

procedure TPDFFontMapper.EnumFonts;
var
  LF: TLogFont;
begin
  FillChar(LF, SizeOf(LF), 0);
  LF.lfCharSet := DEFAULT_CHARSET;
  FDC := CreateCompatibleDC(0);
  try
    Windows.EnumFontFamiliesEx(FDC, LF, @EnumFFProc, Integer(Self), 0);
  finally
    Windows.DeleteDC(FDC);
  end;
end;

Внутри функции EnumFonts вызывается функция EnumFontFamiliesEx, которая перебирает шрифты, используя процедуру обратного вызова EnumFFProc.

function EnumFFProc(const LogFont: TEnumLogFontEx; const TextMetric: TNewTextMetric; FontType: DWORD; LParam: DWORD): Integer; stdcall;
begin
  if FontType and TRUETYPE_FONTTYPE = TRUETYPE_FONTTYPE then
    // Здесь можно выполнить какие-либо полезные действия с LogFont...
  Result := 1;
end;

В EnumFFProc проверяется, является ли текущий шрифт векторным (TrueType и OpenType шрифты считаются векторными). Если условие выполняется, то шрифт является поддерживаемым GDI+.

Альтернативный ответ

Для отображения диалога выбора шрифтов, который показывал бы только шрифты GDI+, можно использовать компонент TFontDialog из VCL, но он по умолчанию отображает все доступные шрифты. Для ограничения списка шриффов в диалоге потребуется дополнительная логика, которая будет фильтровать шрифты, отображая только те, которые поддерживаются GDI+.

Пример использования в Lazarus

Для использования данного метода в Lazarus, который является кросс-платформенной IDE для разработки на Object Pascal, код должен быть аналогичен тому, что используется в Delphi, с учетом небольших изменений в синтаксисе и возможных ограничений, связанных с поддержкой различных платформ.

В заключение, для получения списка шрифтов GDI+ в Delphi 2009 для Win32 можно использовать функцию EnumFontFamiliesEx для перебора шрифтов и процедуру обратного вызова для их фильтрации. Это позволяет разработчикам работать с векторными шрифтами, которые поддерживаются GDI+, в своих приложениях.

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

Вопрос заключается в поиске способа получения списка шрифтов, совместимых с GDI+, в среде разработки Delphi 2009 для Win32, а также в нахождении диалога для выбора таких шрифтов, который можно использовать также в среде Lazarus.


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

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




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


:: Главная :: Шрифты ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 14:50:05/0.0036599636077881/0