반응형
마우스 Move 또는 Left Button Click 시에 마우스 포인트가 어떠한 선 위에 있는지를 체크하는 방법이다.
하기의 코드에 문제가 있거나, 개선이 필요한 부분이 있다면 의견 주시면 감사하겠습니다.
Function의 첫번째 파라미터는 선의 시작 포인트, 두번째 파라미터는 선의 종료 포인트, 세번째 파라미터는 마우스의 포인트를 말한다.
public static bool CheckPointOnLine(Point startP, Point endP, Point point)
{
bool check = false;
double dx = endP.X - startP.X;
double dy = endP.Y - startP.Y;
double dx1 = point.X - startP.X;
double dy1 = point.Y - startP.Y;
double a = 0, b = 0, c = 0;
if (Math.Abs(dx) > 0 && Math.Abs(dy) < Math.Abs(dx))
{
if (dx * dx1 >= 0 && Math.Abs(dx1) <= Math.Abs(dx))
{
a = (dy * dx1);
b = (dx * dy1);
c = Math.Abs(dx * 5);
if (Math.Abs(a - b) <= c)
{
check = true;
}
}
}
else if (Math.Abs(dy) > 0)
{
if (dy * dy1 >= 0 && (Math.Abs(dy1) <= Math.Abs(dy)))
{
a = (dx * dy1);
b = (dy * dx1);
c = Math.Abs(dy * 5);
if (Math.Abs(a - b) <= c)
{
if (Math.Abs(a - b) <= c)
{
check = true;
}
}
}
}
return check;
}
반응형
'C# 개발 > C#' 카테고리의 다른 글
특정 일자를 넣으면 요일을 반환하는 함수 (0) | 2023.01.04 |
---|---|
ComboBox에서 특정 값 또는 텍스트로 SelectedIndex 값을 찾고자 할 경우 (0) | 2022.04.20 |
User Control 에서 풍선도움말 보여주기 (0) | 2020.02.17 |
WinForm에서 Partial Class를 이용해서 UI와 로직을 분리하기 (0) | 2019.08.22 |
특정 일자의 주차 가져오기 (0) | 2019.06.26 |