Чтобы сделать текст выпуклым, нужно за светло-серой надписью разместить точно такие же надписи, только белую чуть левее и выше и светло-серую чуть правее и ниже.
Приведенная ниже программа выводит выпуклый текст, который вдавливается при нажатии.
Код - это программное приложение Delphi, создаваемое графическое пользовательское интерфейсе (GUI) с формой. Форма имеет архитектуру событийного управления, где различные события, такие как клик мыши и освобождение мыши, обрабатываются отдельными процедурами.
Вот что код делает:
Он устанавливает некоторые константы вверху: s - строка, которая будет печататься на форме, а также три цвета (ColDark, ColNorm, ColLight), которые будут использованы для печати текста. Есть также два целочисленных переменных XPos и YPos, которые представляют собой начальную позицию текста.
Процедура FormCreate вызывается, когда форма создается. Она настраивает холст (область, где рисуются графики), чтобы он не имел фоновой кисти, а затем устанавливает шрифт Arial с размером 20 и стилем жирного.
Процедура FormMouseDown вызывается, когда левая кнопка мыши кликается на форме. Она изменяет цвет текста в зависимости от того, был ли он ранее нажат или нет, а затем печатает текст на трех различных позициях: одна позиция ниже-левее начальной позиции (XPos - dx, YPos - dy), другая позиция выше-правее начальной позиции (XPos + dx, YPos + dy) и сама начальная позиция.
Процедура FormMouseUp вызывается, когда левая кнопка мыши освобождается на форме. Она изменяет цвет текста в зависимости от того, был ли он ранее нажат или нет, а затем печатает текст на трех различных позициях: одна позиция ниже-левее начальной позиции (XPos - dx, YPos - dy), другая позиция выше-правее начальной позиции (XPos + dx, YPos + dy) и сама начальная позиция.
Процедура FormPaint вызывается, когда форма necesita быть перерисована (например, при изменении размера). Она триггерует событие освобождения левой кнопки на позиции (0, 0), что эффективно печатает текст снова используя цвета, установленные в последнем событии нажатия.
Эффект этого кода будет тем, что текст будет печататься три раза на слегка различных позициях каждый раз, когда форма создается или перерисовывается. Когда вы кликайте и освобождаете левую кнопку мыши в любом месте формы, текст изменит цвет и позицию, чтобы появиться "выступающим" или "3D".
Для улучшения содержимого я предлагаю следующие советы:
Добавьте комментарии, объясняющие, что каждая процедура делает в более подробных терминах (например, "Печатает текст на различных позициях").
Рассмотрите возможность использования отдельной функции или метода для обработки логики печати текста на различных позициях, а не смешивать ее с кодом событий.
Если вы хотите, чтобы форма выглядела более привлекательной, рассмотрите возможность добавления фона или изображения, изменения стиля и размера шрифта.
Для описания, что код делает, я уже предоставил подробный обзор выше.
Для предложения альтернативного решения я предлагаю следующие идеи:
Вместо использования трех отдельных цветов для создания эффекта 3D рассмотрите возможность использования одного цвета с варьирующим уровнем прозрачности или опACITY.
Рассмотрите возможность использования библиотеки графики, которая предоставляет встроенную поддержку отображения текста 3D, а не ручное расчет позиций и цветов каждого символа.
В статье описывается алгоритм создания выпуклого текста с помощью программирования на языке Pascal, который использует три надписи: светло-серую, белую и нормальную, чтобы создать эффект вдавливания текста при нажатии.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.