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;
}