2010-04-27 65 views
1

我想知道繪圖應用程序如何在沒有空白的情況下繪製鼠標關閉的整個過程。我的意思是,例如,如果該程序只在鼠標的X,Y座標上繪製圓圈,那麼如果鼠標過於虛擬,看起來就像是一堆小圓圈,而不是一條不錯的連續線。如何在不經常在0.001秒前的鼠標位置和現在的鼠標位置之間繪製一條簡短的直線的情況下完成此任務。 謝謝在繪圖應用程序中不斷繪圖

+1

@everyone:OP詢問* brush *工具是如何工作的,而不是* line *工具 – 2010-04-27 20:13:22

+0

@BlueRaja,謝謝,我也誤解了:) – 2010-04-27 20:15:00

+0

@BlueRaja:是什麼讓你覺得他/她/畫筆工具? – MusiGenesis 2010-04-27 20:23:10

回答

3

不能而不不斷吸取當前鼠標點和前一點,這就是爲什麼這是繪圖程序一般之間做一個行來完成。

愛好者繪圖程序將適合彎曲線以前的多個點來實現更自然的繪圖筆畫,但原理是相同的。

更新:根據評論,看起來你有一個計時器涉及您的繪圖代碼。這肯定是不必要的,因爲只要移動鼠標,應用程序就會生成一個MouseMove事件,並且可以使用該事件繪製下一行。

+0

行,或某種[曲線](http://en.wikipedia.org/wiki/B%C3%A9zier_curve) – 2010-04-27 20:11:24

+0

「Bezier」=「適合彎曲線條到多個點」。 :) – MusiGenesis 2010-04-27 20:15:22

+0

創建這些數組作爲指令來生成行,然後將它們推入每個操作的隊列,然後彈出它們以進行撤消是一個好主意嗎? – jmasterx 2010-04-27 20:16:45

2

你可以畫一個短的曲線線之間的鼠標是0.001秒前和鼠標現在。

鼠標位置不連續,如果移動速度比慢得多,則會得到不連續的離散點。您需要使用您的首選方法在這些點之間進行插值。

+0

好吧,所以我使用計時器和繪製短直線的方式是正確的嗎? – jmasterx 2010-04-27 20:10:19

+0

你可以使用貝塞爾曲線http://en.wikipedia.org/wiki/B%C3%A9zier_curve來獲得一些好的效果。 – 2010-04-27 20:13:10

+1

你不需要計時器。您只需要記錄以前的鼠標位置,然後畫一條線到當前的鼠標位置。如果你正在做更有趣的插值(比如立方體),你只需要跟蹤過去的更多點。 – 2010-04-27 20:13:48