2010-08-03 17 views
0

假設我正在創建一個基於柵格的繪畫程序。我的畫筆是橢圓形的。用戶點擊並拖動鼠標來繪製區域。我現在有兩點:pointA(他們點擊的地方)和pointB(從鼠標拖拽返回的第一個點)。我想填充畫筆區域內的所有像素。什麼是最好的方法來做到這一點?使用橢圓形筆刷填充兩點之間像素的最快方法?

我的第一種方法是計算兩點之間的斜率,然後從點A增加到點B.對於它們之間的每個點,我搜索橢圓範圍內的所有像素,並在它們處於範圍內時打開它們。但這看起來效率不高,因爲像素通常會被檢查多次 - 通常會重複多次,因爲增量比橢圓要小得多(請考慮維恩圖)。

有沒有更好的方法呢?一種效率更高並且最小化像素需要檢查的次數。

回答

0

我目前做的非常類似的東西可以告訴你,我在做什麼:

  • 鼠標移動和我收到的點(x,y),其中鼠標是
  • 我用布氏算法估計從一個鼠標位置到下一個位置的線條(我沒有爲每個像素獲取鼠標移動事件)。
  • 然後我用適當的間距(刷子的20%)沿着線條「畫」(又名畫)我的畫筆筆尖(圓圈)。

因爲我不知道你用什麼編程語言/框架,我不能給你的代碼:)