From 077feaab14b0ffea22474944d8dafc24a6249bb2 Mon Sep 17 00:00:00 2001 From: Artem Date: Tue, 4 Feb 2025 23:49:50 +0400 Subject: [PATCH] =?UTF-8?q?=D0=AD=D1=82=D0=B0=D0=BF=204,=20=D0=B4=D0=B2?= =?UTF-8?q?=D0=B8=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=80=D0=B8=D1=81=D1=83?= =?UTF-8?q?=D0=BD=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PrLaba1/PrLaba1/DrawningDiselLoko.cs | 50 +++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/PrLaba1/PrLaba1/DrawningDiselLoko.cs b/PrLaba1/PrLaba1/DrawningDiselLoko.cs index f1049a9..cfafb99 100644 --- a/PrLaba1/PrLaba1/DrawningDiselLoko.cs +++ b/PrLaba1/PrLaba1/DrawningDiselLoko.cs @@ -88,6 +88,22 @@ public class DrawningDiselLoko return; } + if (x < 0) + { + x = 1; + } + + if (y < 0) { y = 1; } + + if (x + _drawingCarWidth > _pictureWidth.Value) { + x = _pictureWidth.Value - _drawingCarWidth - 1; + } + + if (y + _drawingCarHeight > _pictureHeight.Value) + { + y = _pictureHeight.Value - _drawingCarHeight - 1; + } + // TODO если при установке объекта в эти координаты, он будет "выходить" за границы формы // то надо изменить координаты, чтобы он оставался в этих границах _startPosX = x; @@ -110,7 +126,7 @@ public class DrawningDiselLoko { //влево case Direction.Left: - if (_startPosX.Value - DiselLoko.Step > 0) + if (_startPosX.Value - DiselLoko.Step - 10 > 0) { _startPosX -= (int)DiselLoko.Step; } @@ -124,14 +140,14 @@ public class DrawningDiselLoko return true; // вправо case Direction.Right: - if (_startPosX.Value - DiselLoko.Step > 0) + if (_startPosX.Value + DiselLoko.Step + _drawingCarWidth/2 < _pictureWidth.Value - _drawingCarWidth) { _startPosX += (int)DiselLoko.Step; } return true; //вниз case Direction.Down: - if (_startPosX.Value - DiselLoko.Step > 0) + if (_startPosY.Value + DiselLoko.Step + _drawingCarWidth / 4 < _pictureHeight.Value - _drawingCarHeight) { _startPosY += (int)DiselLoko.Step; } @@ -155,8 +171,9 @@ public class DrawningDiselLoko Pen pen = new(Color.Black); Brush additionalBrush = new SolidBrush(DiselLoko.ColorBody); Brush blueBrush = Brushes.Blue; - - + Brush grayBrush = Brushes.Gray; + + Pen blackPen = new Pen(Color.Black, 2); Brush blackBrush = Brushes.Black; @@ -257,16 +274,31 @@ public class DrawningDiselLoko // труба if (DiselLoko.IsTube) { - + // **Труба (полигон)** + Point[] chimney = { + new Point(_startPosX.Value + 20, _startPosY.Value - 20), + new Point(_startPosX.Value + 35, _startPosY.Value - 20), + new Point(_startPosX.Value + 35, _startPosY.Value), + new Point(_startPosX.Value + 20, _startPosY.Value) + }; + g.FillPolygon(blackBrush, chimney); } // отсек if (DiselLoko.IsComportament) { - /*g.FillRectangle(additionalBrush, _startPosX.Value + 75, _startPosY.Value + 23, 25, 15); - g.FillRectangle(additionalBrush, _startPosX.Value + 35, _startPosY.Value + 23, 35, 15); - g.FillRectangle(additionalBrush, _startPosX.Value + 10, _startPosY.Value + 23, 20, 15);*/ + //Топливный отсек(полигон) + Point[] fuelTank = { + new Point(_startPosX.Value + 110, _startPosY.Value + _drawingCarHeight-20), // Верхний левый угол + new Point(_startPosX.Value + 130, _startPosY.Value + _drawingCarHeight -20), // Верхний правый угол + new Point(_startPosX.Value +130 , _startPosY.Value + _drawingCarHeight-5), // Нижний правый угол + new Point(_startPosX.Value + 110, _startPosY.Value + _drawingCarHeight-5) // Нижний левый угол + }; + g.FillPolygon(grayBrush, fuelTank); + g.DrawPolygon(blackPen, fuelTank); } } + } +