Поиск сообщества
Показаны результаты для тегов 'TTextLayout'.
Найдено: 6 результатов
-
Здравствуйте Появилась задача сделать надписи так, что бы цвет букв в одном слове был разный, как на картинке например Но так и не нашел решения. Делать слова по одной букве тоже не вариант. Как поступить, какой есть выход? Может кто то уже делал и есть наработки?
-
*** Небольшой обмен опытом *** Вижу что вопросы о размере текста довольно частые, поделюсь своими наработками. function CalcTextSize(Text: string; Font: TFont; Size: Single = 0): TSizeF; Функция для расчета размера прямоугольника, занимаемого однострочным текстом. Параметры: Text - Текст Font - Шрифт с которым будет выводиться текст Size - если 0, то Font.Size будет использоваться из Font, иначе из данного параметра Исходный код: uses System.Types, FMX.Types, FMX.Graphics, FMX.TextLayout, System.Math, System.SysUtils; function CalcTextSize(Text: string; Font: TFont; Size: Single = 0): TSizeF; var TextLayout: TTextLayout; begin TextLayout := TTextLayoutManager.DefaultTextLayout.Create; try TextLayout.BeginUpdate; try TextLayout.Text := Text; TextLayout.MaxSize := TPointF.Create(9999, 9999); TextLayout.Font.Assign(Font); if not SameValue(0, Size) then begin TextLayout.Font.Size := Size; end; TextLayout.WordWrap := False; TextLayout.Trimming := TTextTrimming.None; TextLayout.HorizontalAlign := TTextAlign.Leading; TextLayout.VerticalAlign := TTextAlign.Leading; finally TextLayout.EndUpdate; end; Result.Width := TextLayout.Width; Result.Height := TextLayout.Height; finally TextLayout.Free; end; end; function FontSizeForBox(Text: string; Font: TFont; Width, Height: Single; MaxFontSize: Single = cMaxFontSize): Integer; Функция возвращающая максимально возможный размер шрифта, для текста вписанного в заданный прямоугольник. Параметры: Text - Текст Font - Шрифт с которым будет выводиться текст Width, Height - Ширина и высота прямоугольника MaxFontSize - Максимально возможный размер шрифта Исходный код: uses System.Types, FMX.Types, FMX.Graphics, FMX.TextLayout, System.Math, System.SysUtils; const cMaxFontSize = 512; function FontSizeForBox(Text: string; Font: TFont; Width, Height: Single; MaxFontSize: Single = cMaxFontSize): Integer; var Size, Max, Min, MaxIterations: Integer; Current: TSizeF; begin Max := Trunc(MaxFontSize); Min := 0; MaxIterations := 20; repeat Size := (Max + Min) div 2; Current := CalcTextSize(Text, Font, Size); if ((Abs(Width - Current.Width) < 1) and (Width >= Current.Width)) and ((Abs(Height - Current.Height) < 1) and (Height >= Current.Height)) then break else if (Width < Current.Width) or (Height < Current.Height) then Max := Size else Min := Size; Dec(MaxIterations); until MaxIterations = 0; Result := Size; end; --- Также данные функции можно найти в этом юните
-
При обычном режиме: GlobalUseDirect2D := True И при использовании: GlobalUseGPUCanvas := True Как добиться того, чтобы в CanvasD2D, тоже была поддержка атрибутов с цветом? Есть подозрения того, что в TTextLayuotD2D забыли добавить ее! Скачать пример TextAttribute.zip
-
Всем привет. Реализую поведение TListBox, при котором на OnItemClick, высота Item-а увеличивается и становится виден TText (делаем Visible:=true). Анимация для наглядности: ). Реализуется так: Detail := Item.Children.Items[1]; (Detail as TText).Visible := true; ItemAni := TFloatAnimation.Create(Item); ItemAni.Parent := Item; ItemAni.StartValue := 50; ItemAni.StopValue := 150; ItemAni.PropertyName := 'Height'; ItemAni.Start; ItemAni.OnFinish := FreeItemAni; Вопрос такой. Как мне узнать сколько места займет разбитый автоматом на строки текст в TText, чтобы подстраивать высоту Item под размер текста(он получается от 1 до 7-8 строк). Как узнать на сколько подстрок разбивает TText содержимое? Сильно не пинайте, я дизайнер, а не программист.
-
Как сделать Label при вводе текста в который, он будет автоматически увеличиваться по высоте при необходимости?
- 6 ответов
-
- MeasureText
- Autosize
-
(и ещё 1 )
C тегом: