У меня есть приложение Win Forms, в котором я могу рисовать некоторые фигуры (например, прямоугольник/круг), а также заполнять их цветом. Теперь, если я выбрал кисть, чтобы заполнить форму (скажем, прямоугольник) и щелкнуть «границу» формы (в этом случае я не хочу заполнять форму), как я могу определить, что «точка» находится на граница (я имею в виду «края») формы.
Как определить, находится ли точка на границе (то есть «краях») формы
Ответы (2)
Представьте свою фигуру как GraphicsPath, затем используйте IsOutlineVisible, чтобы определить, находится ли точка под контуром.
Метод IsVisible() сообщит вам, находится ли точка в пределах всего GraphicsPath.
у вас есть 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 и т. д. для прямоугольника
Для других, но «правильных» форм вы должны вычислить его аналогичным образом.
Для сложной и неправильной формы следует разложить ее на мелкие кусочки и сделать такой же расчет:
проверьте это: определите, находится ли точка внутри произвольной формы? < /а>
Если фигуру можно преобразовать в растровое изображение, другим способом может быть проверка цвета пикселя, но это будет работать только в том случае, если цвет края формы отличается от цвета другого пикселя в фигуре.