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

Как с помощью функции Textout вывести на канве прозрачный текст

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

Как с помощью функции Textout вывести на канве прозрачный текст

Вот небольшой участок кода из купленного мною CD-ROM "How To Book". Файл с именем "HowUtils.Pas" содержит реализацию алгоритма "потухания" текста и обратного ему эффекта на холсте, откуда вы можете почерпнуть необходимую вам информацию.


function TFadeEffect.FadeInText(Target: TCanvas; X, Y: integer; FText: string):
  TRect;
var
  Pic: TBitmap;
  W, H: integer;
  PicRect, TarRect: TRect;
begin
  Pic := TBitmap.Create;
  Pic.Canvas.Font := Target.Font;
  W := Pic.Canvas.TextWidth(FText);
  H := Pic.Canvas.TextHeight(FText);
  Pic.Width := W;
  Pic.Height := H;
  PicRect := Rect(0, 0, W, H);
  TarRect := Rect(X, Y, X + W, Y + H);
  Pic.Canvas.CopyRect(PicRect, Target, TarRect);
  SetBkMode(Pic.Canvas.Handle, Transparent);
  Pic.Canvas.TextOut(0, 0, FText);
  FadeInto(Target, X, Y, Pic);
  Pic.Free;
  FadeInText := TarRect;
end;

procedure TFadeEffect.FadeOutText(Target: TCanvas; TarRect: TRect; Orig:
  TBitmap);
var
  Pic: TBitmap;
  PicRect: TRect;
begin
  Pic := TBitmap.Create;
  Pic.Width := TarRect.Right - TarRect.Left;
  Pic.Height := TarRect.Bottom - TarRect.Top;
  PicRect := Rect(0, 0, Pic.Width, Pic.Height);
  Pic.Canvas.CopyRect(PicRect, Orig.Canvas, TarRect);
  FadeInto(Target, TarRect.Left, TarRect.Top, Pic);
  Pic.Free;
end;

Для создания текста с прозрачным фоном в Delphi можно установить режим фона канваса в bmTransparent перед рисованием текста. Однако это будет работать только если сам канвас также имеет прозрачный фон.

Вот пример, как можно модифицировать процедуру FadeInText, чтобы сделать текст прозрачным:

function TFadeEffect.FadeInText(Target: TCanvas; X, Y: integer; FText: string): TRect;
var
  Pic: TBitmap;
  W, H: integer;
  PicRect, TarRect: TRect;
begin
   // ...
  SetBkMode(Pic.Canvas.Handle, Transparent);
  Pic.Canvas.TextOut(0, 0, FText); // Рисуем текст с прозрачным фоном
   // ...
end;

В этом примере мы устанавливаем режим фона канваса в bmTransparent с помощью функции SetBkMode перед рисованием текста с помощью TextOut. Это сделает текст appear as if it's drawn on a transparent background.

Обратите внимание, что вам нужно убедиться, что сам канвас имеет прозрачный фон для этого работать. Вы можете сделать это, установив свойство TransparentColor канваса или используя прозрачную кисть при рисовании на канвасе.

Альтернативно, вы могли использовать полупрозрачный цвет при рисовании текста вместо создания entire background transparent. Это позволит вам контролировать уровень прозрачности и смешивания с underlying image.

Напомню, что Delphi 2007 и более поздние версии имеют встроенную поддержку alpha-компоновки графики, которая позволяет рисовать полупрозрачные изображения и текст на канвасе. Вы можете использовать компонент TAlphaBlend или свойство Canvas.Brush.Color с альфа-значением для достижения этого эффекта.

Если вы используете более раннюю версию Delphi, которая не имеет встроенной поддержки alpha-компоновки графики, вам может потребоваться использовать третьестороннюю библиотеку или реализацию для достижения аналогичного эффекта.

В статье описывается функция Textout для вывода прозрачного текста на канве с помощью алгоритма 'потухания' текста и обратного эффекта на холсте.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-15 22:03:15/0.0034990310668945/0