From efcf9cea4baad727bb987742ce706693231c12f1 Mon Sep 17 00:00:00 2001 From: ujijrujijr Date: Wed, 18 Oct 2023 20:42:11 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=97=D0=B0=D0=BB=D0=B8=D0=BB=20=D0=BB?= =?UTF-8?q?=D0=B0=D0=B11?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Trolleybus/Trolleybus.sln | 25 +++ Trolleybus/Trolleybus/DirectionType.cs | 33 ++++ Trolleybus/Trolleybus/DrawingTrolleybus.cs | 178 ++++++++++++++++++ Trolleybus/Trolleybus/EntityTrolleybus.cs | 59 ++++++ .../Trolleybus/FormTrolleybus.Designer.cs | 134 +++++++++++++ Trolleybus/Trolleybus/FormTrolleybus.cs | 81 ++++++++ Trolleybus/Trolleybus/FormTrolleybus.resx | 120 ++++++++++++ Trolleybus/Trolleybus/Program.cs | 17 ++ .../Properties/Resources.Designer.cs | 103 ++++++++++ .../Trolleybus/Properties/Resources.resx | 133 +++++++++++++ .../Resources/стрелка вверх.png | Bin 0 -> 6469 bytes .../Resources/стрелка влево.png | Bin 0 -> 5788 bytes .../Resources/стрелка вниз.png | Bin 0 -> 6086 bytes .../Resources/стрелка вправо.png | Bin 0 -> 6368 bytes Trolleybus/Trolleybus/Trolleybus.csproj | 26 +++ 15 files changed, 909 insertions(+) create mode 100644 Trolleybus/Trolleybus.sln create mode 100644 Trolleybus/Trolleybus/DirectionType.cs create mode 100644 Trolleybus/Trolleybus/DrawingTrolleybus.cs create mode 100644 Trolleybus/Trolleybus/EntityTrolleybus.cs create mode 100644 Trolleybus/Trolleybus/FormTrolleybus.Designer.cs create mode 100644 Trolleybus/Trolleybus/FormTrolleybus.cs create mode 100644 Trolleybus/Trolleybus/FormTrolleybus.resx create mode 100644 Trolleybus/Trolleybus/Program.cs create mode 100644 Trolleybus/Trolleybus/Properties/Resources.Designer.cs create mode 100644 Trolleybus/Trolleybus/Properties/Resources.resx create mode 100644 Trolleybus/Trolleybus/Resources/стрелка вверх.png create mode 100644 Trolleybus/Trolleybus/Resources/стрелка влево.png create mode 100644 Trolleybus/Trolleybus/Resources/стрелка вниз.png create mode 100644 Trolleybus/Trolleybus/Resources/стрелка вправо.png create mode 100644 Trolleybus/Trolleybus/Trolleybus.csproj diff --git a/Trolleybus/Trolleybus.sln b/Trolleybus/Trolleybus.sln new file mode 100644 index 0000000..b66c48a --- /dev/null +++ b/Trolleybus/Trolleybus.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34024.191 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Trolleybus", "Trolleybus\Trolleybus.csproj", "{D0EC2C7B-1218-45A1-95F1-7697825B93CF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D0EC2C7B-1218-45A1-95F1-7697825B93CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D0EC2C7B-1218-45A1-95F1-7697825B93CF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D0EC2C7B-1218-45A1-95F1-7697825B93CF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D0EC2C7B-1218-45A1-95F1-7697825B93CF}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {7BD35329-9874-48AD-A3F4-50BA7A354CF5} + EndGlobalSection +EndGlobal diff --git a/Trolleybus/Trolleybus/DirectionType.cs b/Trolleybus/Trolleybus/DirectionType.cs new file mode 100644 index 0000000..e3d7df7 --- /dev/null +++ b/Trolleybus/Trolleybus/DirectionType.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Trolleybus +{ + /// + /// Направление перемещения + /// + public enum DirectionType + { + /// + /// Вверх + /// + Up = 1, + /// + /// Вниз + /// + Down = 2, + /// + /// Влево + /// + Left = 3, + /// + /// Вправо + /// + Right = 4 + + } +} + diff --git a/Trolleybus/Trolleybus/DrawingTrolleybus.cs b/Trolleybus/Trolleybus/DrawingTrolleybus.cs new file mode 100644 index 0000000..07de4ba --- /dev/null +++ b/Trolleybus/Trolleybus/DrawingTrolleybus.cs @@ -0,0 +1,178 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Trolleybus +{ + public class DrawingTrolleybus + { + /// + /// Класс-сущность + /// + public EntityTrolleybus? EntityTrolleybus { get; private set; } + /// + /// Ширина окна + /// + private int _pictureWidth; + /// + /// Высота окна + /// + private int _pictureHeight; + /// + /// Левая координата прорисовки троллейбуса + /// + private int _startPosX; + /// + /// Верхняя кооридната прорисовки троллейбуса + /// + private int _startPosY; + /// + /// Ширина прорисовки троллейбуса + /// + private readonly int _trolleybusWidth = 150; + /// + /// Высота прорисовки троллейбуса + /// + private readonly int _trolleybusHeight = 95; + /// + /// Инициализация свойств + /// + /// Скорость + /// Вес + /// Цвет кузова + /// Дополнительный цвет + /// Признак наличия "рогов" + /// Признак наличия отсека под электрические батареи + /// Ширина картинки + /// Высота картинки + /// true - объект создан, false - проверка не пройдена, нельзя создать объект в этих размерах + public bool Init(int speed, double weight, Color bodyColor, Color additionalColor, bool horns, bool batteries, int width, int height) + { + if (width < _trolleybusWidth || height < _trolleybusHeight) + { + return false; + } + _pictureWidth = width; + _pictureHeight = height; + EntityTrolleybus = new EntityTrolleybus(); + EntityTrolleybus.Init(speed, weight, bodyColor, additionalColor, horns, batteries); + return true; + } + /// + /// Установка позиции + /// + /// Координата X + /// Координата Y + public void SetPosition(int x, int y) + { + if (x > _pictureWidth || y > _pictureHeight) { + return; + } + _startPosX = x; + _startPosY = y; + } + /// + /// Изменение направления перемещения + /// + /// Направление + public void MoveTransport(DirectionType direction) + { + if (EntityTrolleybus == null) + { + return; + } + switch (direction) + { + //влево + case DirectionType.Left: + if (_startPosX - EntityTrolleybus.Step > 0) + { + _startPosX -= (int)EntityTrolleybus.Step; + } + break; + //вверх + case DirectionType.Up: + if (_startPosY - EntityTrolleybus.Step > 0) + { + _startPosY -= (int)EntityTrolleybus.Step; + } + break; + // вправо + case DirectionType.Right: + if (_startPosX + _trolleybusWidth + EntityTrolleybus.Step < _pictureWidth) + { + _startPosX += (int)EntityTrolleybus.Step; + } + break; + // вниз + case DirectionType.Down: + if (_startPosY + _trolleybusHeight + EntityTrolleybus.Step < _pictureHeight) + { + _startPosY += (int)EntityTrolleybus.Step; + } + break; + } + } + /// + /// Прорисовка объекта + /// + /// + public void DrawTransport(Graphics g) + { + if (EntityTrolleybus == null) + { + return; + } + Pen pen = new(Color.Black); + Pen bodyPen = new(EntityTrolleybus.BodyColor); + Pen additionalPen = new(EntityTrolleybus.AdditionalColor); + Brush additionalBrush = new SolidBrush(EntityTrolleybus.AdditionalColor); + Pen windowPen = new(Color.Cyan); + //РИСОВАНИЕ САМОГО ТРРОЛЛЕЙБУСА + //корпус + g.DrawLine(bodyPen, _startPosX, _startPosY + 30, _startPosX, _startPosY + 80); + g.DrawLine(bodyPen, _startPosX, _startPosY + 80, _startPosX + 20, _startPosY + 80); + g.DrawLine(bodyPen, _startPosX + 45, _startPosY + 80, _startPosX + 105, _startPosY + 80); + g.DrawLine(bodyPen, _startPosX + 130, _startPosY + 80, _startPosX + 150, _startPosY + 80); + g.DrawLine(bodyPen, _startPosX + 150, _startPosY + 80, _startPosX + 150, _startPosY + 30); + g.DrawLine(bodyPen, _startPosX + 150, _startPosY + 30, _startPosX, _startPosY + 30); + + //колёса + g.DrawEllipse(pen, _startPosX + 20, _startPosY + 70, 25, 25); + g.DrawEllipse(pen, _startPosX + 105, _startPosY + 70, 25, 25); + + //дверь + g.DrawRectangle(bodyPen, _startPosX + 55, _startPosY + 50, 16, 30); + + //окна + //окна до двери + for (int i = 0; i < 2; i++) + { + g.DrawEllipse(windowPen, _startPosX + 5 + 25 * i, _startPosY + 35, 16, 24); + } + //окна после двери + for (int i = 0; i < 3; i++) + { + g.DrawEllipse(windowPen, _startPosX + 75 + 25 * i, _startPosY + 35, 16, 24); + } + + //опциональные "рога" + if (EntityTrolleybus.Horns) + { + g.DrawLine(additionalPen, _startPosX + 70, _startPosY + 30, _startPosX + 40, _startPosY); + g.DrawLine(additionalPen, _startPosX + 70, _startPosY + 30, _startPosX + 60, _startPosY); + } + + //опциональный отсек для батареи + if (EntityTrolleybus.Batteries) + { + Point[] pointsOfBatteries = { new Point(_startPosX + 70, _startPosY + 30), new Point(_startPosX + 70, _startPosY + 25), new Point(_startPosX + 100, _startPosY + 25), new Point(_startPosX + 110, _startPosY + 30)}; + g.FillPolygon(additionalBrush, pointsOfBatteries); + } + } + } +} + diff --git a/Trolleybus/Trolleybus/EntityTrolleybus.cs b/Trolleybus/Trolleybus/EntityTrolleybus.cs new file mode 100644 index 0000000..f78ddaf --- /dev/null +++ b/Trolleybus/Trolleybus/EntityTrolleybus.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Trolleybus +{ + public class EntityTrolleybus + { + /// + /// Скорость + /// + public int Speed { get; private set; } + /// + /// Вес + /// + public double Weight { get; private set; } + /// + /// Основной цвет + /// + public Color BodyColor { get; private set; } + /// + /// Дополнительный цвет (для опциональных элементов) + /// + public Color AdditionalColor { get; private set; } + /// + /// Признак (опция) наличия "рогов" + /// + public bool Horns { get; private set; } + /// + /// Признак (опция) наличия отсека под электрические батареи + /// + public bool Batteries { get; private set; } + /// + /// Шаг перемещения автомобиля + /// + public double Step => (double)Speed * 100 / Weight; + /// + /// Инициализация полей объекта-класса троллейбуса + /// + /// Скорость + /// Вес троллейбуса + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия "рогов" + /// Признак наличия отсека под электрические батареи + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool horns, bool batteries) + { + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + Horns = horns; + Batteries = batteries; + } + } +} + diff --git a/Trolleybus/Trolleybus/FormTrolleybus.Designer.cs b/Trolleybus/Trolleybus/FormTrolleybus.Designer.cs new file mode 100644 index 0000000..34f1ad0 --- /dev/null +++ b/Trolleybus/Trolleybus/FormTrolleybus.Designer.cs @@ -0,0 +1,134 @@ +namespace Trolleybus +{ + partial class FormTrolleybus + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + pictureBoxTrolleybus = new PictureBox(); + buttonCreate = new Button(); + buttonUp = new Button(); + buttonLeft = new Button(); + buttonDown = new Button(); + buttonRight = new Button(); + ((System.ComponentModel.ISupportInitialize)pictureBoxTrolleybus).BeginInit(); + SuspendLayout(); + // + // pictureBoxTrolleybus + // + pictureBoxTrolleybus.Dock = DockStyle.Fill; + pictureBoxTrolleybus.Location = new Point(0, 0); + pictureBoxTrolleybus.Name = "pictureBoxTrolleybus"; + pictureBoxTrolleybus.Size = new Size(882, 453); + pictureBoxTrolleybus.TabIndex = 5; + pictureBoxTrolleybus.TabStop = false; + // + // buttonCreate + // + buttonCreate.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonCreate.Location = new Point(12, 409); + buttonCreate.Name = "buttonCreate"; + buttonCreate.Size = new Size(90, 30); + buttonCreate.TabIndex = 6; + buttonCreate.Text = "Создать"; + buttonCreate.UseVisualStyleBackColor = true; + buttonCreate.Click += ButtonCreate_Click; + // + // buttonUp + // + buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonUp.BackgroundImage = Properties.Resources.стрелка_вверх; + buttonUp.BackgroundImageLayout = ImageLayout.Zoom; + buttonUp.Location = new Point(812, 377); + buttonUp.Name = "buttonUp"; + buttonUp.Size = new Size(30, 30); + buttonUp.TabIndex = 7; + buttonUp.UseVisualStyleBackColor = true; + buttonUp.Click += ButtonMove_Click; + // + // buttonLeft + // + buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonLeft.BackgroundImage = Properties.Resources.стрелка_влево; + buttonLeft.BackgroundImageLayout = ImageLayout.Zoom; + buttonLeft.Location = new Point(776, 413); + buttonLeft.Name = "buttonLeft"; + buttonLeft.Size = new Size(30, 30); + buttonLeft.TabIndex = 8; + buttonLeft.UseVisualStyleBackColor = true; + buttonLeft.Click += ButtonMove_Click; + // + // buttonDown + // + buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonDown.BackgroundImage = Properties.Resources.стрелка_вниз; + buttonDown.BackgroundImageLayout = ImageLayout.Zoom; + buttonDown.Location = new Point(812, 413); + buttonDown.Name = "buttonDown"; + buttonDown.Size = new Size(30, 30); + buttonDown.TabIndex = 9; + buttonDown.UseVisualStyleBackColor = true; + buttonDown.Click += ButtonMove_Click; + // + // buttonRight + // + buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonRight.BackgroundImage = Properties.Resources.стрелка_вправо; + buttonRight.BackgroundImageLayout = ImageLayout.Zoom; + buttonRight.Location = new Point(848, 413); + buttonRight.Name = "buttonRight"; + buttonRight.Size = new Size(30, 30); + buttonRight.TabIndex = 10; + buttonRight.UseVisualStyleBackColor = true; + buttonRight.Click += ButtonMove_Click; + // + // FormTrolleybus + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(882, 453); + Controls.Add(buttonRight); + Controls.Add(buttonDown); + Controls.Add(buttonLeft); + Controls.Add(buttonUp); + Controls.Add(buttonCreate); + Controls.Add(pictureBoxTrolleybus); + Name = "FormTrolleybus"; + Text = "Троллейбус"; + ((System.ComponentModel.ISupportInitialize)pictureBoxTrolleybus).EndInit(); + ResumeLayout(false); + } + + #endregion + + private PictureBox pictureBoxTrolleybus; + private Button buttonCreate; + private Button buttonUp; + private Button buttonLeft; + private Button buttonDown; + private Button buttonRight; + } +} \ No newline at end of file diff --git a/Trolleybus/Trolleybus/FormTrolleybus.cs b/Trolleybus/Trolleybus/FormTrolleybus.cs new file mode 100644 index 0000000..d4064dc --- /dev/null +++ b/Trolleybus/Trolleybus/FormTrolleybus.cs @@ -0,0 +1,81 @@ +namespace Trolleybus +{ + /// + /// "" + /// + public partial class FormTrolleybus : Form + { + /// + /// - + /// + private DrawingTrolleybus? _drawingTrolleybus; + public FormTrolleybus() + { + InitializeComponent(); + } + /// + /// + /// + private void Draw() + { + if (_drawingTrolleybus == null) + { + return; + } + Bitmap bmp = new(pictureBoxTrolleybus.Width, pictureBoxTrolleybus.Height); + Graphics gr = Graphics.FromImage(bmp); + _drawingTrolleybus.DrawTransport(gr); + pictureBoxTrolleybus.Image = bmp; + } + /// + /// "" + /// + /// + /// + private void ButtonCreate_Click(object sender, EventArgs e) + { + Random random = new(); + _drawingTrolleybus = new DrawingTrolleybus(); + // + _drawingTrolleybus.Init(random.Next(100, 300), + random.Next(1000, 3000), + Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), + 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)), + pictureBoxTrolleybus.Width, pictureBoxTrolleybus.Height); + // + _drawingTrolleybus.SetPosition(random.Next(10, 100), random.Next(10, 100)); + Draw(); + } + /// + /// + /// + /// + /// + private void ButtonMove_Click(object sender, EventArgs e) + { + if (_drawingTrolleybus == null) + { + return; + } + string name = ((Button)sender)?.Name ?? string.Empty; + switch (name) + { + case "buttonUp": + _drawingTrolleybus.MoveTransport(DirectionType.Up); + break; + case "buttonDown": + _drawingTrolleybus.MoveTransport(DirectionType.Down); + break; + case "buttonLeft": + _drawingTrolleybus.MoveTransport(DirectionType.Left); + break; + case "buttonRight": + _drawingTrolleybus.MoveTransport(DirectionType.Right); + break; + } + Draw(); + } + } +} \ No newline at end of file diff --git a/Trolleybus/Trolleybus/FormTrolleybus.resx b/Trolleybus/Trolleybus/FormTrolleybus.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/Trolleybus/Trolleybus/FormTrolleybus.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Trolleybus/Trolleybus/Program.cs b/Trolleybus/Trolleybus/Program.cs new file mode 100644 index 0000000..1e98dfe --- /dev/null +++ b/Trolleybus/Trolleybus/Program.cs @@ -0,0 +1,17 @@ +namespace Trolleybus +{ + internal static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + // To customize application configuration such as set high DPI settings or default font, + // see https://aka.ms/applicationconfiguration. + ApplicationConfiguration.Initialize(); + Application.Run(new FormTrolleybus()); + } + } +} \ No newline at end of file diff --git a/Trolleybus/Trolleybus/Properties/Resources.Designer.cs b/Trolleybus/Trolleybus/Properties/Resources.Designer.cs new file mode 100644 index 0000000..5f55a0b --- /dev/null +++ b/Trolleybus/Trolleybus/Properties/Resources.Designer.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace Trolleybus.Properties { + using System; + + + /// + /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д. + /// + // Этот класс создан автоматически классом StronglyTypedResourceBuilder + // с помощью такого средства, как ResGen или Visual Studio. + // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen + // с параметром /str или перестройте свой проект VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Trolleybus.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Перезаписывает свойство CurrentUICulture текущего потока для всех + /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap стрелка_вверх { + get { + object obj = ResourceManager.GetObject("стрелка вверх", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap стрелка_влево { + get { + object obj = ResourceManager.GetObject("стрелка влево", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap стрелка_вниз { + get { + object obj = ResourceManager.GetObject("стрелка вниз", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap стрелка_вправо { + get { + object obj = ResourceManager.GetObject("стрелка вправо", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/Trolleybus/Trolleybus/Properties/Resources.resx b/Trolleybus/Trolleybus/Properties/Resources.resx new file mode 100644 index 0000000..39ee3cd --- /dev/null +++ b/Trolleybus/Trolleybus/Properties/Resources.resx @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\стрелка вверх.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\стрелка влево.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\стрелка вниз.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\стрелка вправо.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Trolleybus/Trolleybus/Resources/стрелка вверх.png b/Trolleybus/Trolleybus/Resources/стрелка вверх.png new file mode 100644 index 0000000000000000000000000000000000000000..2df257877e75684bbdaadb6d2d71fa3fa9f4659a GIT binary patch literal 6469 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 Ve5Csw_7?2D>To7beCpj8G5EEs`4P+671Pq+8 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 SHMn5caI)XMvv~WD=l=u7zk$gB literal 0 HcmV?d00001 diff --git a/Trolleybus/Trolleybus/Resources/стрелка вправо.png b/Trolleybus/Trolleybus/Resources/стрелка вправо.png new file mode 100644 index 0000000000000000000000000000000000000000..4eef5b11564c298a9dc8daa054725889f98f43c9 GIT binary patch literal 6368 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 + + + WinExe + net6.0-windows + enable + true + enable + + + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + \ No newline at end of file -- 2.25.1 From e8a24da5cd4e4b849a15a7afe6b75358ca64626a Mon Sep 17 00:00:00 2001 From: ujijrujijr Date: Thu, 19 Oct 2023 19:12:45 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=9B=D0=B0=D0=B11?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Trolleybus/Trolleybus/DrawingTrolleybus.cs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Trolleybus/Trolleybus/DrawingTrolleybus.cs b/Trolleybus/Trolleybus/DrawingTrolleybus.cs index 07de4ba..d8532d6 100644 --- a/Trolleybus/Trolleybus/DrawingTrolleybus.cs +++ b/Trolleybus/Trolleybus/DrawingTrolleybus.cs @@ -68,11 +68,8 @@ namespace Trolleybus /// Координата Y public void SetPosition(int x, int y) { - if (x > _pictureWidth || y > _pictureHeight) { - return; - } - _startPosX = x; - _startPosY = y; + _startPosX = Math.Min(Math.Max(x, 0), _pictureWidth - _trolleybusWidth); + _startPosY = Math.Min(Math.Max(y, 0), _pictureHeight - _trolleybusHeight); } /// /// Изменение направления перемещения -- 2.25.1