diff --git a/lab0/lab0/DrawingTeplohod.cs b/lab0/lab0/DrawingTeplohod.cs index cb59239..80a5806 100644 --- a/lab0/lab0/DrawingTeplohod.cs +++ b/lab0/lab0/DrawingTeplohod.cs @@ -61,13 +61,36 @@ public class DrawingTeplohod /// true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах public bool SetPictureSize(int width, int height) { - // TODO проверка, что объект "влезает" в размеры поля - // если влезает, сохраняем границы и корректируем позицию объекта, если она была уже установлена + if (EntityTeplohod == null) + { + return false; + } + + // Проверяем, что объект не выходит за пределы формы + if (width >= _drawningTeplohodWidth && height >= _drawningTeplohodHeight) + { _pictureWidth = width; _pictureHeight = height; + + // Если уже заданы координаты прорисовки, то корректируем их, чтобы объект оставался видимым + if (_startPosX.HasValue && _startPosY.HasValue) + { + if (_startPosX + _drawningTeplohodWidth > _pictureWidth) + { + _startPosX = _pictureWidth - _drawningTeplohodWidth; + } + if (_startPosY + _drawningTeplohodHeight > _pictureHeight) + { + _startPosY = _pictureHeight - _drawningTeplohodHeight; + } + } + return true; } + return false; + } + /// /// Установка позиции /// @@ -79,8 +102,26 @@ public class DrawingTeplohod { return; } - // TODO если при установке объекта в эти координаты, он будет "выходить" за границы формы - // то надо изменить координаты, чтобы он оставался в этих границах + + // Проверяем, выходит ли объект за границы формы + if (x < 0) + { + x = 0; + } + else if (x + _drawningTeplohodWidth > _pictureWidth) + { + x = _pictureWidth.Value - _drawningTeplohodWidth; + } + + if (y < 0) + { + y = 0; + } + else if (y + _drawningTeplohodHeight > _pictureHeight) + { + y = _pictureHeight.Value - _drawningTeplohodHeight; + } + _startPosX = x; _startPosY = y; }