WinForm實現的外觀如圖所示,WinForm實現的功能包括基本的移動,拖動虛線邊框和手柄調整尺寸,移動和調整尺寸過程中均可繪制對齊線,自動對齊,和Visual Studio效果一樣,支持畫框多選後同時操作多個對象.
類圖:
我用的WinForm實現的方法自己感覺還是比較挫的,並不復雜.
看這個對象,我將虛線邊框定義為TargetSizeLine,將手柄定義為TargetSizeDot,TargetSizeGroup的意思是邊框組,用來保存若干個手柄對象和邊框對象,一個邊框組中一般保存四個邊框對象,分別為四條邊。
TargetSizeDot對象通過一個枚舉,TargetDirection,來表示其所代表的方向,這在調整目標對象的尺寸時使用.中間粉色的目標對象,我是從UserControl繼承的,為UserControlTarget,它綁定一個TargetSizeGroup對象。
通過邊框調整目標對象的尺寸是在邊框組對象中響應的,在類圖上可以看到TargetSizeGroup裡的事件:OnMouseDown,OnMouseMove,OnMouseUp。
拖動和調整尺寸只要響應這幾個鼠標事件即可。繪制對齊線和自動對齊其實也比較簡單,移動或調整對象尺寸時,和已有的其它對象對比,如果邊框距離相近,如5像素之內,就直接讓它靠到那條線上去,而畫線,就判斷如果邊框在同一條線上,就DrawLine。