procedure TForm1.Button1Click(Sender: TObject);
var
OldTextColor: TColorRef;
OldBkColor: TColorRef;
OldBkMode: Integer;
begin
OldTextColor := SetTextColor(Form1.Canvas.Handle, clYellow);
OldBkColor := SetBkColor(Form1.Canvas.Handle, clGreen);
OldBkMode := SetBkMode(Form1.Canvas.Handle, OPAQUE);
TextOut(Form1.Canvas.Handle, 20, 20, 'Delphi World - лучше всех! ;-)', 27);
SetBkMode(Form1.Canvas.Handle, OldBkMode);
SetBkColor(Form1.Canvas.Handle, OldBkColor);
SetTextColor(Form1.Canvas.Handle, OldTextColor);
end;
Here is the translation of the provided content into Russian:
Классический код Delphi!
Процедура, предоставленная ниже, устанавливает цвет переднего плана (цвет текста) в желтый, фон в зеленый и режим текста в прозрачный (т.е., перезаписывает любые существующие тексты). Затем она печатает строку "Delphi World - лучше всех! ;-)" координаты (20, 20) на форме.
Чтобы изменить цвет фона текста (не формы), вы можете использовать функцию SetBkColor. Однако, эта функция изменяет фон устройства контекста (DC), а не цвет текста. Для достижения желаемого эффекта вам нужно нарисовать прямоугольник с желаемым цветом за текстом.
Вот обновленная версия процедуры, которая устанавливает цвет текста и фон:
procedure TForm1.Button1Click(Sender: TObject);
var
OldTextColor: TColorRef;
OldBkColor: TColorRef;
OldBkMode: Integer;
begin
// Сохраняем старые цвета и режимы
OldTextColor := SetTextColor(Form1.Canvas.Handle, clYellow);
OldBkColor := SetBkColor(Form1.Canvas.Handle, clWhite); // Белый фон
// Нарисуем белый прямоугольник как фон для текста (опционально)
Form1.Canvas.Rectangle(20, 20, 47, 47);
// Печатаем строку
TextOut(Form1.Canvas.Handle, 20, 20, 'Delphi World - лучше всех! ;-)', 27);
// Восстанавливаем старые цвета и режимы
SetTextColor(Form1.Canvas.Handle, OldTextColor);
SetBkColor(Form1.Canvas.Handle, OldBkColor);
end;
В обновленном коде мы устанавливаем фон в белый цвет с помощью SetBkColor перед печатанием текста. Мы также рисуем прямоугольник с тем же размером, как и текст, в тех же координатах (опционально), который служит фоном для текста.
Если вы хотите изменить только фон текста самого по себе, без влияния на фон формы, вам нужно использовать другой подход, например, рисуя градиент или используя пользовательский шрифт с цветным фоном.
В статье описывается процедура изменения фонового цвета текста в Delphi с помощью функции SetTextColor и других соответствующих методов.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS