Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Как в Delphi изменить интервал шрифта?

Автор: ktarasov
Дата сообщения: 06.07.2004 07:28
Уважаемые Гуру!
Можно ли Delphi 6(5,7) при выводе текста изменять межсимвольный интервал (как в Винворде)? Можно ли задать контурность шрифта?
Автор: TheChampion
Дата сообщения: 06.07.2004 08:01
Да, можно. Для этого используют функцию Win32 API CreateFont (полное описание всех параметров см. Platform SDK). Средствами Delphi этого не сделаешь.

Что делать:

1. В переменной типа HFONT будем хранить дескриптор шрифта (кажется, это описано в windows).

2. Чтобы создать шрифт, используй функцию CreateFont (вернет дескриптор, его надо проверить на NULL).

3. Получи контекст окна обращением к TForm::Handle.

HDC hDC = GetDC(MyForm.Handle);

4. Выбери шрифт в контекст, СОХРАНИВ СТАРЫЙ ШРИФТ:

HFONT OldFont := SelectObject(hDC, NewFont);

5. Сделай надписи, используя TextOut и DrawText (лучше из API, так быстрее).

6. Выбери старый шрифт в контекст:

SelectObject(hDC, OldFont);

7. Освободи контекст:

ReleaseDC(MyForm.Handle, hDC);

8. Если шрифт не нужен, удали его:

DeleteObject(NewFont);

PS: пардон за нотацию в виде C/C++, просто она лучше отражает действительность.

PPS: Delphi, конечно, хорошо, но вы пробовали делать с помощью Canvas наклонные надписи? Получалось?

Автор: ktarasov
Дата сообщения: 06.07.2004 19:18
Спасибо, а нет ли компоненты, чтобы все это можно было сделать в формочках-менюшках с превьюшкой?
Автор: TheChampion
Дата сообщения: 07.07.2004 06:39
Насчет компонент не знаю. Поищи в интернете - может, найдешь.

Но с компонентами всегда проблемы: они делают лишь что-то, а остального из них не вытащищь. К WinAPI обращаться удобно, особенно в таком экзотическом случае.

Страницы: 1

Предыдущая тема: Компонент Tdbf в Delphi 6


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.