C# WinForms를 사용하여 내 XNA 게임용 레벨 작성기를 만듭니다. 필자는 MSPaint와 같은 연필 도구를 사용하여 페인트 할 수있는 타일 눈금이 있습니다. 문제는 마우스를 빠르게 끌 때 (ish) 줄을 페인트 할 때 타일을 건너 뛰는 것입니다.MouseMove 이벤트가 너무 느립니다.
구글에서 그림을 그리기 위해 스레드를 생성한다고 말한 한 가지 방법을 사용해 보았지만 도움이되지 않았습니다.
아이디어가 있으십니까?
C# WinForms를 사용하여 내 XNA 게임용 레벨 작성기를 만듭니다. 필자는 MSPaint와 같은 연필 도구를 사용하여 페인트 할 수있는 타일 눈금이 있습니다. 문제는 마우스를 빠르게 끌 때 (ish) 줄을 페인트 할 때 타일을 건너 뛰는 것입니다.MouseMove 이벤트가 너무 느립니다.
구글에서 그림을 그리기 위해 스레드를 생성한다고 말한 한 가지 방법을 사용해 보았지만 도움이되지 않았습니다.
아이디어가 있으십니까?
OTTOMH, 마우스의 마지막 점을 추적 할 수 있으며 MouseMove 핸들러에서 직선 운동을 취하고 마지막 점과 현재 점 사이의 모든 타일을 결정할 수 있습니다. 내 생각 엔 사용자가 마우스를 매우 빠르게 움직이는 경우를 처리하기 위해 충분한 MouseMove 이벤트를 발생시키지 않을 가능성이 높습니다.
정확합니다. MouseMove는 마우스가 움직이는 모든 픽셀에 대해 보장되지 않습니다. 가장 좋은 방법은 마지막 점에서 현재 점까지 선을 그리는 것입니다. 사용자가 세부 사항을 원할 경우 더 느리게 그릴 수 있으므로 이벤트를 더 가깝게 만듭니다. – OwenP
마우스가 '빠르게 움직이는'경우는 이벤트가 더 빨리 발생하기 때문이 아닙니다. 마우스가 매번 더 많은 픽셀을 이동시키기 때문입니다. 커서 자체는 도중에 모든 픽셀에 그려지지 않습니다. – configurator
굉장! 완벽하게 일했습니다.
나는 선을 그어야 여기http://www.cs.unc.edu/~mcmillan/comp136/Lecture6/Lines.html
에서 DDA 라인 알고리즘을 사용했다.
감사합니다.
관련 항목 http://stackoverflow.com/questions/3347483/writing-a-paint-program-a-la-ms-paint-how-to-interpolate-between-mouse-move-eve – kervin