diff --git a/Cruiser/Cruiser/DrawingCruiser.cs b/Cruiser/Cruiser/DrawingCruiser.cs index 9bf2a50..393ef09 100644 --- a/Cruiser/Cruiser/DrawingCruiser.cs +++ b/Cruiser/Cruiser/DrawingCruiser.cs @@ -67,7 +67,19 @@ public class DrawingCruiser /// public bool SetPictureSize(int width, int height) { - //TODO проверка, что объект влезает в границы поля + if (_pictureWidth < _drawingCruiserWidth || _pictureHeight < _drawingCruiserHeight) + { + if (_startPosX != null && _startPosY != null) + { + if (width < 0) width = 0; + else if (_startPosX + _drawingCruiserWidth > width) _startPosX = width - _drawingCruiserWidth; + if (height < 0) height = 0; + else if (_startPosY + _drawingCruiserHeight > height) _startPosY = height - _drawingCruiserHeight; + } + } + + // TODO проверка, что объект "влезает" в размеры поля + // если влезает, сохраняем границы и корректируем позицию объекта, если она была уже установлена _pictureHeight = height; _pictureWidth = width; return true; @@ -80,15 +92,31 @@ public class DrawingCruiser /// public void SetPosition(int x, int y) { + _startPosX = x; + _startPosY = y; if (!_pictureHeight.HasValue || !_pictureWidth.HasValue) { return; - + } + if (_startPosX + _drawingCruiserWidth > _pictureWidth) + { + _startPosX = _pictureWidth - _drawingCruiserWidth; + } + else if (_startPosX < 0) + { + _startPosX = 0; + } + if (_startPosY + _drawingCruiserHeight > _pictureHeight) + { + _startPosY = _pictureHeight - _drawingCruiserHeight; + } + + else if (_startPosY < 0) + { + _startPosY = 0; } //TODO если при установке объекта в эти координаты, он будет выходить за границы поля, //то нужно изменить координаты, чтобы он остался в нужных размерах - _startPosX = x; - _startPosY = y; } /// diff --git a/Cruiser/Cruiser/FormCruiser.cs b/Cruiser/Cruiser/FormCruiser.cs index 40f03cf..fd1222b 100644 --- a/Cruiser/Cruiser/FormCruiser.cs +++ b/Cruiser/Cruiser/FormCruiser.cs @@ -30,7 +30,7 @@ public partial class FormCruiser : Form Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2))); _drawingCruiser.SetPictureSize(pictureBoxCruiser.Width, pictureBoxCruiser.Height); - _drawingCruiser.SetPosition(random.Next(10, 100), random.Next(10, 100)); + _drawingCruiser.SetPosition(random.Next(pictureBoxCruiser.Right - 200, pictureBoxCruiser.Right - 160), random.Next(pictureBoxCruiser.Bottom - 150, pictureBoxCruiser.Bottom - 100)); Draw(); }