Перейти к содержанию
Fire Monkey от А до Я

Павел Алхимов

Пользователи
  • Постов

    2
  • Зарегистрирован

  • Посещение

Активность репутации

  1. Like
    Павел Алхимов получил реакцию от Rusland в Почему FGX не входит в стандартную поставку Delphi?   
    Многие компоненты FGX - то, что просто недопортировано из VCL в FMX. Авторы, насколько можно видеть - разработчики из команды Embarcadero. Так почему FGX не входит в стандартную поставку Delphi? Каковы перспективы этого вопроса?
  2. Like
    Павел Алхимов получил реакцию от Kitty в Почему FGX не входит в стандартную поставку Delphi?   
    Многие компоненты FGX - то, что просто недопортировано из VCL в FMX. Авторы, насколько можно видеть - разработчики из команды Embarcadero. Так почему FGX не входит в стандартную поставку Delphi? Каковы перспективы этого вопроса?
  3. Like
    Павел Алхимов отреагировална Brovin Yaroslav в Как в FM нарисовать текст на Canvas под углом?   
    В общем ничего кроме стандартных знаний линейной алгебры здесь не требуется. Согласно линейной алгебры нужно построить матрицу трансформации задать ее для канвы и рисовать все что угодно.
     
    Если вспомнить, то выполнить нужно следующее:
    Сместить Систему Координат (СК) на вектор центра поворота. Повернуть СК на угол поворота Сместить СК на обратные вектор центра поворота. В коде это будет выглядеть так:
    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
×
×
  • Создать...