From 703b99f565e63095832feda0d507013a0a1c3e18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D1=80=D1=82=D1=91=D0=BC=20=D0=95=D1=80=D0=B0=D1=81?= =?UTF-8?q?=D1=82=D0=BE=D0=B2?= Date: Tue, 27 Feb 2024 16:48:22 +0400 Subject: [PATCH] =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=20=E2=84=961.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lab0/lab0/DrawingTeplohod.cs | 49 +++++++++++++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 4 deletions(-) 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; }