2010-08-03 2 views
0

래스터 기반 페인트 프로그램을 만들고 있습니다. 내 브러시는 타원형입니다. 사용자는 마우스를 클릭 한 다음 드래그하여 영역을 페인트합니다. 이제 pointA (클릭 한 곳)와 pointB (마우스 드래그에서 반환 한 첫 번째 지점)의 두 가지 점이 있습니다. 브러시 영역에 속하는 모든 픽셀을 채우고 싶습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?타원형 브러시로 두 점 사이의 픽셀을 채우는 가장 빠른 방법은 무엇입니까?

첫 번째 방법은 두 점 사이의 기울기를 계산 한 다음 pointA에서 pointB까지 증가시키는 것입니다. 그 사이의 각 점에 대해 타원 범위 내의 모든 픽셀을 검색하고 범위 내에 있으면 해당 픽셀을 켭니다. 하지만 이것은 비효율적인데, 그 이유는 픽셀이 종종 타원보다 훨씬 작기 때문입니다 (Venn 다이어그램을 생각해보십시오).

더 나은 방법이 있습니까? 더 효율적이며 픽셀을 검사해야하는 횟수를 최소화합니다.

나는 현재 매우 비슷한 일을하고 있는데 내가 뭘 오전 말할 수

답변

0

:

  • 마우스 이동을 내가 마우스 나에 Bresenham 알고리즘을 사용
  • 입니다 포인트 (X, Y)를 수신 한 마우스 위치에서 다음 마우스 위치로 선을 추정합니다 (모든 픽셀에 대해 마우스 이동 이벤트가 발생하지 않음).
  • 그런 다음 적절한 브러시 (브러시의 20 %)가있는 선을 따라 내 브러시 끝 (원)을 "스탬프"(일명 드로우)합니다. 내가 프로그래밍 언어/프레임 워크는 당신이 무엇을 사용 모르기 때문에

, 난 당신의 코드를 줄 수 :)

관련 문제