Как определить, находится ли точка на границе (то есть «краях») формы

У меня есть приложение Win Forms, в котором я могу рисовать некоторые фигуры (например, прямоугольник/круг), а также заполнять их цветом. Теперь, если я выбрал кисть, чтобы заполнить форму (скажем, прямоугольник) и щелкнуть «границу» формы (в этом случае я не хочу заполнять форму), как я могу определить, что «точка» находится на граница (я имею в виду «края») формы.


person Iorn Man    schedule 12.07.2013    source источник


Ответы (2)


Представьте свою фигуру как GraphicsPath, затем используйте IsOutlineVisible, чтобы определить, находится ли точка под контуром.

Метод IsVisible() сообщит вам, находится ли точка в пределах всего GraphicsPath.

person Idle_Mind    schedule 12.07.2013
comment
Хороший ответ! не знал о GraphicsPath! +1 - person giammin; 12.07.2013
comment
.Net — это БОЛЬШОЙ мир. Я использую его уже десять лет и все еще открываю для себя новые функции; по крайней мере они новые для меня! - person Idle_Mind; 15.07.2013

у вас есть 2 координаты положения формы.

shape.X
shape.Y

у вас есть также размер формы

shape.Height
shape.Width

У вас есть координаты положения мыши

mouse.X
mouse.Y

Если mouse.X находится между shape.X и shape.X+shape.Width, а mouse.Y равно shape.Y или shape.Y+shape.Heigh и т. д. для прямоугольника

Для других, но «правильных» форм вы должны вычислить его аналогичным образом.

Для сложной и неправильной формы следует разложить ее на мелкие кусочки и сделать такой же расчет:

проверьте это: определите, находится ли точка внутри произвольной формы? < /а>

Если фигуру можно преобразовать в растровое изображение, другим способом может быть проверка цвета пикселя, но это будет работать только в том случае, если цвет края формы отличается от цвета другого пикселя в фигуре.

person giammin    schedule 12.07.2013