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

У меня не получается воспользоваться функцией IntersectRectF


Labian

Вопрос

Embarcadero® RAD Studio XE6 Version 20.0.16277.1276 

 

Не работает функция пересечения двух прямоугольников.

Пытаюсь найти прямоугольник пересечения функцией IntersectRectF.

 

Пример кода:

 
var
  R1, R2, ResRect: TRectF;
begin
  R1 := RectF(6, 3, 3, 6);
  R2 := RectF(8, 5, 5, 8);

  if IntersectRectF(ResRect, R1, R2) then
  begin
    ShowMessage(FloatToStr(ResRect.Left) + ' '  + FloatToStr(ResRect.Top) +
            ' '+FloatToStr(ResRect.Right) + ' ' + FloatToStr(ResRect.Bottom));
  end;
end;
 

Функция возвращает False и в ResRect присваивается значениям 0.

Хотя очевидно что есть пересечение в виде квадрата 1 на 1.

 

Как можно еще найти пересечение прямоугольников типа TRectF?

Изменено пользователем Brovin Yaroslav
Отформатирован код
Ссылка на комментарий

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

  • 0
  • Администраторы

Очевидно, если прочитать документацию на функцию RectF, можно обнаружить, что третий и четвертый параметр это правая и нижняя граница, а не ширина и высота соответственно.

 

В связи с нарушением контракта функции создания прямоугольника, функция вполне корректно говорит о том, что пересечений прямоугольников нет.

 

Для правильного создания TRectF, вы можете воспользоваться любым из предложенных по ссылкам ниже способам:

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...