用C++ Qt實現類似Photoshop的鋼筆工具
因為工作上的需求,需要實現一個類似Photoshop里面的鋼筆工具,

分析一下它的功能,包括:
1. 有兩種點:節點和控制點,節點是構成圖形的基本端點,控制點是影響貝塞爾曲線的系數。
2. 創建節點:鼠標左鍵點擊空白區域,即可創建一個方形節點。

3. 刪除節點:鼠標左鍵單擊一個已存在的節點,即可將當前所選的節點刪除。

4. 移動節點:按住Ctrl鍵,長按鼠標左鍵在節點上,可以將節點拖拽,如果節點本身含有兩個控制點,那么也會跟隨一起移動。

5. 移動控制點:按住Ctrl或者Alt鍵,長按鼠標左鍵在控制點上,可以將該控制點單獨移動。

6. 節點轉換和旋轉控制點:原本是方形節點,按住Alt鍵,再長按鼠標左鍵在其方形節點上,再拖拽可實現轉換成圓形節點,并且生成兩個控制節點,隨著鼠標的位置不斷變換,直到鼠標左鍵松開。

7. 閉環節點:超過3個節點(含3個)的情況下,再鼠標左鍵單擊第一個節點,即可讓線條首位相接。

實現核心:
利用Qt提供的 QPainterPath 類進行繪制,quadTo()為二次貝塞爾曲線,cubicTo()為三次貝塞爾曲線。
當兩兩圓形節點相鄰時,就使用三次貝塞爾曲線,
一個圓形節點和一個方形節點之間,就用二次貝塞爾曲線。
Qt實現的成果demo演示視頻:https://live.csdn.net/v/216724

浙公網安備 33010602011771號