2011-05-07 49 views
0

我正在wxWidgets中製作一個程序,它與MS Paint具有類似的功能,但用於更具體的目的。在wxWidgets中繪製類似程序的繪圖工具

我瞭解各種創建筆/鉛筆對象的方法,您可以在拖動鼠標時提交單個像素。有一件事我很難看見是其他一些常用工具:矩形,橢圓形,線條等。對於這些,您按下鼠標左鍵設置一個原點,並且當您拖動鼠標時,它會臨時呈現一個將畫布上的形狀從原點疊加到當前的鼠標位置,最後在釋放鼠標按鈕時將形狀賦予圖像。

創建此過程的最佳方法是什麼?我能想到的唯一解決方案是將鼠標原點存儲在鼠標下,並且隨着鼠標被拖動到當前鼠標位置設置一個臨時變量。每次鼠標位置改變時,您都會將原點的矩形無效到存儲的鼠標位置。一旦釋放鼠標按鈕,形狀將被提交給圖像模型。

我還沒有實現這一點,因爲我想先反饋。這是最佳解決方案,還是容易引起可見閃爍,還有更可取的解決方案?

回答

1

視頻顯示硬件現在非常快,你可能不需要打擾任何這樣的聰明。

這裏有一個簡單的方法

 
- *Mouse moves with button down and tool X selected* 
- IF flagToolInUse THEN remove previous from image model 
- flagToolInUse = TRUE 
- Update image model with tool X 
- Draw image to invisible buffer 
- Copy buffer to display 
- Done 

- *Button released* 
- flagToolInUse = FALSE 
- Done 

這樣做的真正的好處是,你可以編寫一次代碼,並使用每一個變化的圖像,無論使用什麼樣的工具。

如果您需要實現無閃爍wxWidgets的雙緩衝顯示,這裏更多的細節是introduction(窗口居多)

0

我建議檢查他們如何在FloatCanvas中做到這一點。它適用於wxPython,但即使使用「普通」wxWidgets,它也應該給你一些想法。