Допустим, у меня есть прямоугольник XNA с
X = 0, Y = 0, Width = 25, Height = 25.
. Мне нужен метод для зажима другого прямоугольника внутри, чтобы меньший прямоугольник никогда не «выходил» за границы большего.
Например, если я создаю новый прямоугольник с:
X = 23, Y = 20, Width = 10, Height = 10,
Я хочу, чтобы метод возвращал прямоугольник с:
X = 23, Y = 20, Width = 2, Height = 5.
Кроме того, если я создаю новыйПрямоугольник с:
X = -8, Y = 8, Width = 10, = 10,
Я хочу, чтобы метод возвратил прямоугольник с:
X = 0, Y = 8, Width = 2, Height = 10.
Тем временем я получил зажим для работы.Тем не менее, это большая часть уродливого кода, поэтому новый вопрос, как я могу упростить это?
if (SelectionRectangle.X < 0)
{
SelectionRectangle.Width = SelectionRectangle.Width + SelectionRectangle.X;
SelectionRectangle.X = 0;
}
if (SelectionRectangle.X + SelectionRectangle.Width > tileset.Width)
{
if (SelectionRectangle.X > tileset.Width)
{
SelectionRectangle.X = tileset.Width;
SelectionRectangle.Width = 0;
}
else
{
SelectionRectangle.Width = tileset.Width - SelectionRectangle.X;
}
}
if (SelectionRectangle.Y < 0)
{
SelectionRectangle.Height = SelectionRectangle.Height + SelectionRectangle.Y;
SelectionRectangle.Y = 0;
}
if (SelectionRectangle.Y + SelectionRectangle.Height > tileset.Height)
{
if (SelectionRectangle.Y > tileset.Height)
{
SelectionRectangle.Y = tileset.Height;
SelectionRectangle.Height = 0;
}
else
{
SelectionRectangle.Height = tileset.Height - SelectionRectangle.Y;
}
}