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

Решение проблемы отображения текста в FireMonkey для Android

Delphi , Синтаксис , Текст и Строки

При работе с графикой в приложениях на FireMonkey для Android может возникнуть проблема с отображением текста. В частности, при использовании метода .filltext текст может отображаться в виде блоков белого цвета на фоне. В данной статье мы рассмотрим, как решить эту проблему, основываясь на пересказе и анализе предоставленного контекста.

Описание проблемы

Разработчики, использующие FireMonkey для создания приложений, которые работают на разных платформах, могут столкнуться с неожиданным поведением при выводе текста. В частности, если разработчик использует метод .filltext для отображения текста на графическом изображении, все может работать отлично на Win32, но на Android текст может быть представлен в виде блоков белого цвета на фоне, вместо ожидаемого текста с определенным цветом и стилем. Причиной этого является неправильно установленный кисть, используемая шрифтом, что не очевидно для понимания без дополнительных пояснений.

Подтвержденный ответ

Для корректного отображения текста на Android в FireMonkey необходимо установить цвета кисти, отвечающие за цвет текста и фон вокруг него. В коде это достигается следующим образом:

Image1.bitmap.Canvas.Fill.Color := TAlphaColors.Yellow; // цвет текста
Image1.Bitmap.Canvas.Fill.DefaultColor := TAlphaColors.black; // цвет фона

Это отличается от поведения на Win32, где цветом текста управляет свойство Stroke.Color, и вокруг текста создается прозрачный фон.

Пример рабочего кода

procedure TMainFrm.draw_waveform;
var
  mRect: TRect;     // желтый график на черном фоне с желтым текстом
begin
  waveformunit.init(Image1); // инициировать изображение, возможно, в другом месте
  // ОЧЕНЬ важно выполнить это для Android, иначе не будет работать!!!
  // Image.Bitmap.SetSize(Trunc(Image.Width * Image.Canvas.Scale), 
  //   Trunc(Image.Height * Image.Canvas.Scale));
  // Image.Bitmap.canvas.Clear(TAlphaColors.black);
  to_polygon;

  Image1.bitmap.Canvas.BeginScene;
  Image1.Bitmap.canvas.Clear(TAlphaColors.black);
  Image1.bitmap.Canvas.Stroke.Thickness := 1;
  Image1.bitmap.Canvas.Stroke.Color := TAlphaColorRec.Yellow; // цвет линии полигона
  Image1.bitmap.Canvas.DrawPolygon(FPoints2, 1);               // рисование полигона
  // Теперь тестируем текст
  Image1.Bitmap.canvas.Stroke.Kind := TBrushKind.bkSolid;
  Image1.Bitmap.canvas.Stroke.Thickness := 1;
  Image1.bitmap.Canvas.Fill.Color := TAlphaColors.Yellow;     // цвет текста
  Image1.Bitmap.Canvas.Fill.DefaultColor := TAlphaColors.black; // цвет фона
  Image1.Bitmap.Canvas.Font.Size := 36;
  Image1.Bitmap.Canvas.Font.Family := 'Arial';
  Image1.Bitmap.Canvas.Font.Style := [TFontStyle.fsBold];
  Image1.bitmap.Canvas.Blending := false;
  Image1.bitmap.Canvas.Font.Size := 40;
  mRect.Create(0, 0, Round(Image1.width), Round(Image1.height));
  Image1.bitmap.Canvas.FillText(mRect, 'Hello Text!', False, 1,
    [TFillTextFlag.RightToLeft], TTextAlign.Center, TTextAlign.Trailing);
  Image1.bitmap.Canvas.EndScene;
  // ...
end;

Альтернативный ответ (не требуется)

В контексте не было предоставлено информации, которая бы требовала альтернативного решения, поэтому данный раздел опускается.

Заключение

При работе с графикой и текстом в FireMonkey для Android важно помнить о различиях в настройке кистей и цветов между разными платформами. Установка правильных цветов для текста и фона позволит избежать проблем с отображением текста в блоках. Следуя приведенным рекомендациям, разработчики смогут обеспечить корректное отображение текста в приложениях, работающих на Android с использованием FireMonkey.

Создано по материалам из источника по ссылке.

Проблема отображения текста при использовании метода `.filltext` в FireMonkey для Android связана с неправильной настройкой кисти шрифта, что приводит к отображению белых блоков на экране вместо ожидаемого текста.


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

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




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


:: Главная :: Текст и Строки ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 08:50:36/0.0052499771118164/1