diff --git a/ProjectExcavator/ProjectExcavator/DrawningExcavator.cs b/ProjectExcavator/ProjectExcavator/DrawningExcavator.cs
index 7fbcc3f..102e984 100644
--- a/ProjectExcavator/ProjectExcavator/DrawningExcavator.cs
+++ b/ProjectExcavator/ProjectExcavator/DrawningExcavator.cs
@@ -70,21 +70,24 @@ public class DrawningExcavator
{
//TODO проверка, что объект "влезает" в размеры поля
//если влезает, сохраняем границы и корректируем позицию объекта, если она уже была установлена
- _pictureWidth = width;
- _pictureHeight = height;
- if (_pictureWidth <= _drawingExcWidth || _pictureHeight <= _drawingExcHeight)
- {
- _pictureHeight = null;
- _pictureWidth = null;
+ if(_drawingExcWidth > width || _drawingExcHeight > height) {
return false;
}
- if (_startPosX + _drawingExcWidth > _pictureWidth)
+
+ _pictureWidth = width;
+ _pictureHeight = height;
+ if (_startPosX.HasValue || _startPosY.HasValue)
{
- _startPosX = _pictureWidth.Value - _drawingExcWidth;
- }
- if (_startPosY + _drawingExcHeight > _pictureHeight)
- {
- _startPosY = _pictureHeight.Value - _drawingExcHeight;
+ if (_startPosX + _drawingExcWidth > _pictureWidth)
+ {
+ _startPosX = _pictureWidth - _drawingExcWidth;
+ }
+ else if (_startPosX < 0) _startPosX = 0;
+ if (_startPosY + _drawingExcHeight > _pictureHeight)
+ {
+ _startPosY = _pictureHeight - _drawingExcHeight;
+ }
+ else if (_startPosY < 0) _startPosY = 0;
}
return true;
}
@@ -96,15 +99,26 @@ public class DrawningExcavator
/// Координата Y
public void SetPosition(int x, int y, int width, int height)
{
+ if (!_pictureWidth.HasValue || !_pictureHeight.HasValue)
+ {
+ return;
+ }
+
//TODO если при установке объекта в эти координаты, он будет "выходить" за границы формы
//то надо изменить координаты, чтобы он оставался в этих границах
- if (x >= 0 && x + _drawingExcWidth <= width && y >= 0 && y + _drawingExcWidth <= height)
+ if (x + _drawingExcWidth > _pictureWidth)
{
- _startPosX = x;
- _startPosY = y;
- _pictureWidth = width;
- _pictureHeight = height;
+ _startPosX = _pictureWidth - _drawingExcWidth;
}
+ else if (x < 0) _startPosX = 0;
+ else _startPosX = x;
+
+ if (y + _drawingExcHeight > _pictureHeight)
+ {
+ _startPosY = _pictureHeight - _drawingExcHeight;
+ }
+ else if (y < 0) _startPosY = 0;
+ else _startPosY = y;
}
///