Können sagen, ich habe ein XNA Rechteck mitClamp Rechteck innen größer Rechteck
X = 0, Y = 0, Width = 25, Height = 25.
Was ich will, ist ein Verfahren, ein weiteres Rechteck innen zu klemmen, so dass das kleineren Rechteck nie ‚Blätter‘ die Grenzen des größeren .
Zum Beispiel, wenn ich ein neues Rechteck machen mit:
X = 23, Y = 20, Width = 10, Height = 10,
mag ich die Methode ein Rechteck zurück mit:
X = 23, Y = 20, Width = 2, Height = 5.
Auch, wenn ich ein neues Rechteck machen mit:
X = -8, Y = 8, Width = 10, = 10,
ich möchte, dass die Methode ein Rechteck zurück mit:
X = 0, Y = 8, Width = 2, Height = 10.
In der Zwischenzeit habe ich die Klemm zu arbeiten. Dennoch, es ist eine Menge hässlichen Code, so die neue Frage ist, wie kann ich das vereinfachen?
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;
}
}
Können Sie uns zeigen, was Sie probiert haben? Der Code, den du geschrieben hast, warum hat es nicht funktioniert, was war dein Problem? – TJHeuvel
können Sie uns bitte zeigen, wo Sie die Klemme anbringen? –