我目前有代碼,當用戶點擊與以下區域對應的多個錨點時,基於鼠標移動來調整矩形的大小:Left,Top,Right,Bottom,TopLeft,TopRight, BottomLeft,BottomRight。調整一個矩形並捕捉到一個固定的比例
因此,用戶可以點擊並拖動頂部錨點,並根據鼠標的位置調整矩形的頂部座標。所有其他錨都一樣。
事實上,我想通過基於動作捕捉矩形的適當邊來強制執行固定比例(例如2:3或5:7)。我已經爲左,頂,右,底錨定做了這個,因爲它很容易,如果我調整寬度的大小,我只需要根據比例自動調整高度,反之亦然。
我遇到的困難是當用戶拖動一個角落時,如右下角或左上角的錨點。我需要弄清楚如何選擇哪一邊進行拍攝。我有鼠標座標和矩形的左,上,右和底部。
這是我已經試過的代碼:
case Anchor.BottomRight:
float maxRight = CursorPosition.X;
float maxBottom = CursorPosition.Y;
float newRight = Bounds.Left + (Bounds.Width * widthRatio);
float newBottom = Bounds.Top + (Bounds.Height * heightRatio);
if (newRight < maxRight)
{
Width = Height * widthRatio;
}
else
{
Height = Width * heightRatio;
}
break;
在2的固定比的例子:3 widthRatio將是0.666和heightRatio將是1.5。
這段代碼的一半時間工作,但當然它基本上是一個50/50的工作機會。我必須找出合適的條件來捕捉寬度或高度。
太棒了!如果它不適合兩種情況會發生什麼?那麼它的比例已經適當了? – 2013-03-14 19:07:12
這是正確的。 – 2013-03-14 19:10:18