estra Опубликовано 24 мая, 2014 Поделиться Опубликовано 24 мая, 2014 Как в FM нарисовать текст на Canvas под углом? (Вариант в вращением TLabel не предлагать, интересует как это сделать самому, с помощью Canvas.FillText)). Ссылка на комментарий
0 Администраторы Brovin Yaroslav Опубликовано 28 мая, 2014 Администраторы Поделиться Опубликовано 28 мая, 2014 В общем ничего кроме стандартных знаний линейной алгебры здесь не требуется. Согласно линейной алгебры нужно построить матрицу трансформации задать ее для канвы и рисовать все что угодно. Если вспомнить, то выполнить нужно следующее: Сместить Систему Координат (СК) на вектор центра поворота. Повернуть СК на угол поворота Сместить СК на обратные вектор центра поворота. В коде это будет выглядеть так: uses System.Math.Vectors; {$R *.fmx} procedure TForm1.ButtonDrawRotatedTextClick(Sender: TObject); var RotationMatrix: TMatrix; TranslationMatrix: TMatrix; ReverseTranslationMatrix: TMatrix; begin Image1.Bitmap.SetSize(200, 200); Image1.Bitmap.Clear(TAlphaColorRec.Null); with Image1.Bitmap.Canvas do begin BeginScene; try TranslationMatrix := TMatrix.CreateTranslation(100, 100); RotationMatrix := TMatrix.CreateRotation(-Pi / 180 * nbAngle.Value); ReverseTranslationMatrix := TMatrix.CreateTranslation(-100, -100); SetMatrix(ReverseTranslationMatrix * RotationMatrix * TranslationMatrix); Fill.Color := TAlphaColorRec.Red; Fill.Kind := TBrushKind.Solid; Font.Size := 20; FillText(TRectF.Create(50, 50, 150, 150), 'Текст', False, 1, [], TTextAlign.Center, TTextAlign.Center); finally EndScene; end; Image1.Repaint; end; end; Результат: Проект: DrawRotatedTextDemo.zip Павел Алхимов, AngryOwl, Nix0N и 2 других 5 Ссылка на комментарий
Вопрос
estra
Как в FM нарисовать текст на Canvas под углом? (Вариант в вращением TLabel не предлагать, интересует как это сделать самому, с помощью Canvas.FillText)).
Ссылка на комментарий
1 ответ на этот вопрос
Рекомендуемые сообщения