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