現在、ユーザーが次の領域に対応する複数のアンカーをクリックしたときに、マウスの動きに基づいて長方形のサイズを変更するコードがあります: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の確率で機能します。幅または高さのいずれかをスナップするための適切な条件を特定する必要があります。