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

Как вращать текст 3

Delphi , Графика и Игры , Canvas



Для того чтобы вывести текст под углом, вытянуть или сжать его нужно воспользоваться структурой LOGFONT. Здесь показаны не все ее возможности, но, на мой взгляд, самые интересные.

procedure TForm1.FormPaint(Sender: TObject);
var
  lf: TLogFont;
begin
  FillChar(lf, SizeOf(lf), 0);
  with lf do
  begin
    // Высота буквы
    lfHeight := 15;

    // Ширина буквы
    lfWidth := 20;

    // Угол наклона в десятых градуса
    lfEscapement := 100;

    // Жирность 0..1000, 0 - по умолчанию
    lfWeight := 1000;

    // Курсив
    lfItalic := 0;

    // Подчеркнут
    lfUnderline := 1;

    // Зачеркнут
    lfStrikeOut := 1;

    // CharSet
    lfCharSet := RUSSIAN_CharSet;

    // Название шрифта
    StrCopy(lfFaceName, 'Arial');
  end;
  with Form1.Canvas do
  begin
    FillRect(ClipRect);
    Font.Handle := CreateFontIndirect(lf);
    TextOut(0, 100, 'It is a text string');
  end;
end;

Перевод контента на русский язык:

Код, который вы предоставили, написан на Delphi и использует структуру TLogFont, чтобы повернуть строку текста. Вот разбивка каждого шага кода:

  1. Процедура FormPaint вызывается, когда форма necesita быть перерисована, например, при ее создании или изменении размера.
  2. Переменная lf типа TLogFont объявляется и инициализируется нулями с помощью FillChar.
  3. Свойства структуры TLogFont устанавливаются:
    • lfHeight: устанавливает высоту шрифта в пикселях (15 в этом случае).
    • lfWidth: устанавливает ширину шрифта в пикселях (20 в этом случае).
    • lfEscapement: устанавливает угол поворота в десятых частях градуса (100 в этом случае). Положительное значение повернет текст по часовой стрелке, а отрицательное - против часовой стрелки.
    • lfWeight: устанавливает вес шрифта (0-1000). 0 означает стандартный вес, а более высокие значения делают шрифт толще. В этом случае он установлен в 1000 для жирного шрифта.
    • lfItalic: устанавливает, является ли шрифт курсивным (0 - ложь, 1 - истина).
    • lfUnderline: устанавливает, должна ли текст быть подчеркнутой (0 - ложь, 1 - истина).
    • lfStrikeOut: устанавливает, должен ли текст иметь эффект стирания (0 - ложь, 1 - истина).
    • lfCharSet: устанавливает используемый набор символов (в этом случае - русские символы).
    • lFaceName: устанавливает имя шрифта для использования (Arial в этом случае). Строка копируется в буфер lFaceName с помощью StrCopy.
  4. Объект канвы получается из формы и его свойства устанавливаются:
    • FillRect очищает всю прямоугольник канвы.
    • Font.Handle: устанавливает.handle шрифта, созданного с помощью CreateFontIndirect. Это будет применять настройки, установленные в шаге 3 к тексту, который вот-вот будет нарисован.
  5. Строка текста 'It is a text string' рисуется на канве координатами (0, 100) с помощью метода TextOut.

Результат этого кода должен быть повернутым и стилизованным текстом на форме.

В качестве альтернативного решения можно использовать метод Canvas.TextRect, чтобы нарисовать текст с поворотом. Этот метод позволяет указать угол поворота в градусах, поэтому не нужно создавать custom font handle. Вот пример:

with Form1.Canvas do
begin
  FillRect(ClipRect);
  TextRect('It is a text string', 0, 100, Rotation := 45); // повернуть на 45 градусов
end;

Обратите внимание, что этот метод не позволяет иметь точного контроля над свойствами шрифта, такими как вес и курсив. Если вам нужно более тонкий контроль, создание custom font handle с помощью CreateFontIndirect все еще является способом.

В статье описывается способ вращения текста под углом с помощью структуры LOGFONT и процедуры TForm1.FormPaint.


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

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




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


:: Главная :: Canvas ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 02:49:23/0.0034449100494385/0