Принятие Вас имеет четыре края прямоугольной проверки расстояние от краев до центра круга, если его меньше тогда радиус, то формы пересекаются.
if sqrt((rectangleRight.x - circleCenter.x)^2 +
(rectangleBottom.y - circleCenter.y)^2) < radius
// then they intersect
if sqrt((rectangleRight.x - circleCenter.x)^2 +
(rectangleTop.y - circleCenter.y)^2) < radius
// then they intersect
if sqrt((rectangleLeft.x - circleCenter.x)^2 +
(rectangleTop.y - circleCenter.y)^2) < radius
// then they intersect
if sqrt((rectangleLeft.x - circleCenter.x)^2 +
(rectangleBottom.y - circleCenter.y)^2) < radius
// then they intersect
Просмотрите сообщение в блоге Long Paths в .NET series , похоже, что переход к Win32 API через P / Invoke - единственное решение на данный момент, кроме реструктуризации ваших каталогов, чтобы вы не достигли предела.
Раньше я решил эту проблему с помощью библиотеки Delimon.Win32.IO от компании Delimon. Похоже, его сайт http://www.delimon.be в настоящее время не работает. Но я использовал его в прошлом проекте, и он работал как чемпион. Я могу попытаться разыскать его для вас сегодня вечером или просто попытаться найти действительную ссылку на него где-нибудь через Google. Ура. Вот еще одна ссылка, по которой обсуждается эта проблема.
http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/2541a9b9-acd7-4338-89b1-dfc0408e41b5