Лабораторная работа №1

This commit is contained in:
zw1st 2024-02-21 16:36:38 +04:00
parent cd590393be
commit d7b2497caa
2 changed files with 33 additions and 5 deletions

View File

@ -67,7 +67,19 @@ public class DrawingCruiser
/// <returns></returns>
public bool SetPictureSize(int width, int height)
{
//TODO проверка, что объект влезает в границы поля
if (_pictureWidth < _drawingCruiserWidth || _pictureHeight < _drawingCruiserHeight)
{
if (_startPosX != null && _startPosY != null)
{
if (width < 0) width = 0;
else if (_startPosX + _drawingCruiserWidth > width) _startPosX = width - _drawingCruiserWidth;
if (height < 0) height = 0;
else if (_startPosY + _drawingCruiserHeight > height) _startPosY = height - _drawingCruiserHeight;
}
}
// TODO проверка, что объект "влезает" в размеры поля
// если влезает, сохраняем границы и корректируем позицию объекта, если она была уже установлена
_pictureHeight = height;
_pictureWidth = width;
return true;
@ -80,15 +92,31 @@ public class DrawingCruiser
/// <param name="y"></param>
public void SetPosition(int x, int y)
{
_startPosX = x;
_startPosY = y;
if (!_pictureHeight.HasValue || !_pictureWidth.HasValue)
{
return;
}
if (_startPosX + _drawingCruiserWidth > _pictureWidth)
{
_startPosX = _pictureWidth - _drawingCruiserWidth;
}
else if (_startPosX < 0)
{
_startPosX = 0;
}
if (_startPosY + _drawingCruiserHeight > _pictureHeight)
{
_startPosY = _pictureHeight - _drawingCruiserHeight;
}
else if (_startPosY < 0)
{
_startPosY = 0;
}
//TODO если при установке объекта в эти координаты, он будет выходить за границы поля,
//то нужно изменить координаты, чтобы он остался в нужных размерах
_startPosX = x;
_startPosY = y;
}
/// <summary>

View File

@ -30,7 +30,7 @@ public partial class FormCruiser : Form
Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)),
Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)));
_drawingCruiser.SetPictureSize(pictureBoxCruiser.Width, pictureBoxCruiser.Height);
_drawingCruiser.SetPosition(random.Next(10, 100), random.Next(10, 100));
_drawingCruiser.SetPosition(random.Next(pictureBoxCruiser.Right - 200, pictureBoxCruiser.Right - 160), random.Next(pictureBoxCruiser.Bottom - 150, pictureBoxCruiser.Bottom - 100));
Draw();
}