|
Вопрос # 435/ вопрос открыт / |
|
Здравствуйте! Много раз видел в векторных редакторах такую вещь: если накидать на канву много линий и выделить их все, то появиться область Rect, которую можно растягивать и сужать и т.п. Вопрос, что происходить с линиями, в момент когда тянещь за сторону выделенной области(Rect)??
 |
Вопрос задал: SMaks (статус: 1-ый класс)
Вопрос отправлен: 26 марта 2007, 01:55
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Матвеев Игорь Владимирович
Здравствуйте, SMaks!
Просто определяются координаты прямоугольника, описанного вокруг выделенных объектов. Когда меняются размеры прямоугольника выделения оригинальные координаты точек домножаются на коэффициент изменения прямоугольника выделения (оригинальные / новые, по ширине и высоте). Аналогично и с поворотом.
 |
Ответ отправил: Матвеев Игорь Владимирович (статус: Студент)
Время отправки: 26 марта 2007, 05:48
Оценка за ответ: 4
Комментарий к оценке: Допустим я получил этот прямоугольник, и взяв за левый край, уменьшаю его(с Rect0 до Rect1), то как должны измениться координаты точек внутри области?
|
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 28 марта 2007, 14:24; участников в обсуждении: 2.
|
Матвеев Игорь Владимирович (статус: Студент), 27 марта 2007, 06:35 [#1]:
Не понимаю, почему это вызывает у Вас трудности.
Посмотрите (файл удалён).
|
|
SMaks (статус: 1-ый класс), 28 марта 2007, 14:24 [#2]:
Матвеев Игорь Владимирович: Спасибо, разобрался. Оказывается надо было сначала перевести точку в координаты, относительно области:
Point.X := Rect1.Left + round((Point.X-Rect0.Left) * ((Rect1.Right-Rect1.Left)/(Rect0.Right-Rect0.Left)));
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|