Перейти к содержанию
  • Регистрация
  • 0
Mars M

FillText непонятно отрисовывает.

Вопрос

Рисую текст на TGid'е.

Вот такой код:

...........
StrInfo := 'Подключение...';
Canvas.FillText(aInfoRect, StrInfo, False, 1, [TFillTextFlag.RightToLeft], TTextAlign.Trailing, TTextAlign.Center);

Текст выводит вот так - ...Подключение

Проблема я так понял не нова http://fire-monkey.ru/topic/3234-canvas-и-filltext-в-stringgridе-разворот-времени/

Совет из той темы не помог.

Как исправить?

Изменено пользователем Mars M

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

  • 0

Решил проблему так.

Canvas.FillText(aInfoRect, StrInfo, False, 1, [], TTextAlign.Leading, TTextAlign.Center);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Похожий контент

    • От web_warp
      В этой теме я уже задавал вопрос, но, наверное, я просто ошибся разделом. Аккумулирую вопрос:
      10.1 Berlin, C++, Win8, FMX. Интересует особенность работы Canvas->FillText(), вот код:
      void __fastcall TTabbedForm::StringGrid1DrawColumnCell(TObject *Sender, TCanvas * const Canvas, TColumn * const Column, const TRectF &Bounds, const int Row, const TValue &Value, const TGridDrawStates State) { // код... UnicodeString CT = TabbedForm->StringGrid1->Cells[Column->Index][Row]; Canvas->FillText(Bounds, CT, false, 100,TFillTextFlags() << TFillTextFlag::ftRightToLeft, TTextAlign::taTrailing, TTextAlign::taTrailing); } В итоге наблюдаются совсем странные "фишки":
      1. Разворот времени, хотя в FillText() текст передаётся правильный.
      2. Если текст заканчивается на скобку, то скобка разворачивается и переносится в начало текста.
      3. И, если есть и кириллица, и латиница, то текст просто не выводится)) (хотя есть подозрение, что это кавычки виноваты).
       
      Кто сталкивался? Что делать? Есть альтернативы?
    • От web_warp
      В DrawColumnCell провожу зарисовку некоторых строк, необходима подсветка цветом. И тут возникла неожиданная проблема на ровном месте: ячейка, где текстом записано время, почему-то меняет местами время и дату, хотя передаётся в функцию FillText как надо.
      TabbedForm->StringGrid1->Canvas->Fill->Color = background_color; TabbedForm->StringGrid1->Canvas->FillRect(Bounds, 0, 0, AllCorners, 100); TabbedForm->StringGrid1->Canvas->Fill->Color = font_color; TabbedForm->StringGrid1->Canvas->Font->Style << fsBold; TabbedForm->StringGrid1->Canvas->FillText(Bounds,TabbedForm->StringGrid1->Cells[Column->Index][Row], false, 100,TFillTextFlags() << TFillTextFlag::ftRightToLeft, TTextAlign::taTrailing, TTextAlign::taTrailing); Подскажите пожалуйста, как развернуть время обратно?

      Ну и параллельно вопрос: как строку сплошным цветом заливать? Без белых границ?
    • От Navovvol
      Как вывести текст на изображение так, чтобы его можно было сохранить в .jpg формате.
      P.S. Нет метода TextOut у Image.
    • От Igor
      Krug1: TCircle лежащий на TabItem4, TabControl1 лежащим на Form1
       
      Проблема в том, что текст кажется рисуется по координатам формы, а не Krug1, или TabItem4, или TabControl1 (заменял в коде krug1.Canvas на TabControl1.Tabs[3].Canvas всё равно по координатам формы рисует).
       
      В теории представляю, что если по координатам круга то TRectF.Create(0, 0, krug1.Width, krug1.Height) должен работать, но нет.
       

       
      В коде (кусок из события Click объекта krug1) ниже по логике в TRectF.Create с опорой на координаты Tab'а, хотя канва krug1, в итоге рисует над TabControl1:
      with krug1.Canvas do begin BeginScene; try Fill.Color := TAlphaColorRec.Red; Fill.Kind := TBrushKind.Solid; Font.Size := 10; FillText(TRectF.Create(krug1.Position.X, krug1.Position.Y, krug1.Position.X+krug1.Width, krug1.Position.Y+krug1.Height), 'Текст', False, 1, [], TTextAlign.Center, TTextAlign.Center); finally EndScene; end; end;
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...