Исправил 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 проверка, что объект "влезает" в размеры поля
//если влезает, сохраняем границы и корректируем позицию объекта, если она уже была установлена
_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
/// <param name="y">Координата Y</param>
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;
}
/// <summary>