/*public void sticky_bord(Figure near) // добавление наблюдателей при "касании" фигур липкого объекта * { * bool iSstickObj = false; // этот объект уже липкий или нет * for (int i = 0; i < _observers.Count; i++) * { * if (_observers[i] == near) // если эта фигура уже "прилипла" мы ее не проверяем * { * iSstickObj = true; * } * } * * if (iSstickObj == false) * { * foreach (PointF point_near in near.GetPathF().PathPoints) // каждая точка контура фигуры сравнивается с кажой точкой контура липкого объекта * { * foreach (PointF point_sticky in sticky.GetPathF().PathPoints) // GetPathF возвращает контур фигуры * { * float dx = (Math.Abs(point_sticky.X - point_near.X)); * float dy = (Math.Abs(point_sticky.Y - point_near.Y)); * if ((int)Math.Sqrt(dx * dx + dy * dy) <= 3) * { * addObservers(near); * iSstickObj = true; * break; // объект подписался, дальше не проверяем * } * } * if (iSstickObj == true) // если объект уже подписался, то проверка закончена * break; * } * } * }*/ public void sticky_bord(Figure near) // добавление наблюдателей при "касании" фигур липкого объекта { bool iSstickObj = false; // этот объект уже липкий или нет for (int i = 0; i < _observers.Count; i++) { if (_observers[i] == near) // если эта фигура уже "прилипла" мы ее не проверяем { iSstickObj = true; } } if (iSstickObj == false) { foreach (PointF point_sticky in sticky.GetPathF().PathPoints) // точки контура липкого объекта отдаются в count_dist фигуры (вернет true, если попали точкой ы фигуру) { if (near.countDist((int)point_sticky.X, (int)point_sticky.Y) == true) { addObservers(near); break; // попав одной точкой, завершаем проверку } } } }