Исправил SetPictureSize() и SetPosition()

This commit is contained in:
insideq 2024-02-05 17:11:53 +04:00
parent 72c1646109
commit d6acb857ab

View File

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