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

Dimonka

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

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

  • Посещение

  1. Ну если уж брать алгоритмы нахождения пересечения, то универсальные. Например этот: http://angusj.com/delphi/clipper.php
  2. Делать собственный стиль с подсветкой для элементов комбобокса, а при отображении элемента корректировать положение подсветки. Как-то так.
  3. Не совсем то, что я хотел, но ответ меня натолкнул на правильное решение. Выглядит это так. Форма (кусок): object RectPaper: TRectangle Height = 217.000000000000000000 Position.X = 32.000000000000000000 Position.Y = 24.000000000000000000 Width = 369.000000000000000000 object RectElement: TRectangle Fill.Color = xFFF3B4B4 Height = 57.000000000000000000 Position.X = 16.000000000000000000 Position.Y = 32.000000000000000000 RotationAngle = -20.000000000000000000 Width = 137.000000000000000000 end end Вращение: procedure TFormTest.Button1Click(Sender: TObject); var H, W: single; R: TRectF; Center: TPointF; X, Y: Single; begin // поворачиваем холст W := RectPaper.Width; H := RectPaper.Height; RectPaper.Width := H; RectPaper.Height := W; // поворачиваем обьект на холсте RectElement.RotationAngle := RectElement.RotationAngle + 90; R := RectElement.BoundsRect; Center := R.CenterPoint + RectElement.Position.Point; X := Center.X - RectElement.Height * 0.5; Y := Center.Y + RectElement.Width * 0.5; RectElement.Position.Point := PointF(H - Y, X); RectPaper.Repaint; end; В общем спасибо! Вопрос решён.
  4. У меня тестовый контрол был симметричным.. Твой код хорош, только мне нужно сохранить центр вращения.
  5. Да вроде поворачиваются куда надо, вот только смещаются в непонятном направлении. Будет время набросаю рабочий пример.
  6. Альтернативы DevExpress-у пока нет. Т.е. если понадобятся удобные для пользователя риббон, treelist и таблицы, то FMX пока не даёт ничего из этого. Вручную эмулировать поведение этих контролов - сойдёшь с ума Если надо что-то другое, то можно попробовать.
  7. Задача - повернуть контрол на 90 градусов и при этом сохранить его положение в новых координатах. Как например лист страницы поворачиваем на 90 градусов. Поворот родительского контрола не подходит. Следующий псевдокод правильно поворачивает контрол, если у него RotationAngle = 0 Control.RotationAngle := Control.RotationAngle + 90; X := Control.Position.X; Y := Control.Position.Y + Control.Height; Control.Position.Point := PointF(ParentControl.Height - Y, X); Что не хватает, чтобы учитывался изначальный угол поворота контрола?
×
×
  • Создать...