矩形Aが矩形Bに含まれるように位置を調整

2025年1月8日水曜日

C# WPF

記事のカテゴリー: C#、.NET 9、WPF

矩形Aを矩形Bの真ん中に置く

矩形rを矩形baseRectの真ん中に移動します。

ちなみに、矩形とは4つの角がすべて直角な四角形のことです。

C#:

public static Rect Center(Rect baseRect, Rect r)
{
    r.Location = new Point(
        baseRect.Left + (baseRect.Width - r.Width) / 2,
        baseRect.Top + (baseRect.Height - r.Height) / 2);
    return r;
}

矩形Aが矩形Bに含まれるように位置を調整

矩形rが矩形containerの中に含まれていればOK、含まれていなければ含まれるまで最小限位置をずらします。

C#:

public static Rect OffsetIfNotContains(Rect container, Rect r)
{
    if (!container.Contains(r))
    {
        double offsetX = 0;
        double offsetY = 0;
        if (r.Width < container.Width)
        {
            if (r.Left < container.Left)
            {
                offsetX = container.Left - r.Left;
            }
            else if (r.Right > container.Right)
            {
                offsetX = container.Right - r.Right;
            }
        }
        if (r.Height < container.Height)
        {
            if (r.Top < container.Top)
            {
                offsetY = container.Top - r.Top;
            }
            else if (r.Bottom > container.Bottom)
            {
                offsetY = container.Bottom - r.Bottom;
            }
        }
        r.Offset(offsetX, offsetY);
    }
    return r;
}