我目前有代码,当用户点击与以下区域对应的多个锚点时,基于鼠标移动来调整矩形的大小: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