From ab255a4cc87dcfa597eb6793b9faeb1454e58562 Mon Sep 17 00:00:00 2001 From: Tonb73 Date: Mon, 19 Feb 2024 08:25:06 +0300 Subject: [PATCH] LabWork1 --- ProjectElectricLocomotive/DirectionType.cs | 28 +++ .../DrawningElectricLocomotive.cs | 209 ++++++++++++++++++ .../EntityElectricLocomotive.cs | 62 ++++++ ProjectElectricLocomotive/Form1.Designer.cs | 39 ---- ProjectElectricLocomotive/Form1.cs | 10 - .../FormlectricLocomotive.Designer.cs | 137 ++++++++++++ .../FormlectricLocomotive.cs | 84 +++++++ .../FormlectricLocomotive.resx | 120 ++++++++++ ProjectElectricLocomotive/Program.cs | 2 +- .../ProjectElectricLocomotive.csproj | 15 ++ .../Properties/Resources.Designer.cs | 113 ++++++++++ .../Properties/Resources.resx | 136 ++++++++++++ .../Resources/DownArrow.png | Bin 0 -> 5610 bytes .../Resources/LeftArrow.png | Bin 0 -> 5144 bytes .../Resources/RightArrow (1).png | Bin 0 -> 5107 bytes .../Resources/RightArrow.png | Bin 0 -> 5555 bytes .../Resources/UpArrow.png | Bin 0 -> 5555 bytes 17 files changed, 905 insertions(+), 50 deletions(-) create mode 100644 ProjectElectricLocomotive/DirectionType.cs create mode 100644 ProjectElectricLocomotive/DrawningElectricLocomotive.cs create mode 100644 ProjectElectricLocomotive/EntityElectricLocomotive.cs delete mode 100644 ProjectElectricLocomotive/Form1.Designer.cs delete mode 100644 ProjectElectricLocomotive/Form1.cs create mode 100644 ProjectElectricLocomotive/FormlectricLocomotive.Designer.cs create mode 100644 ProjectElectricLocomotive/FormlectricLocomotive.cs create mode 100644 ProjectElectricLocomotive/FormlectricLocomotive.resx create mode 100644 ProjectElectricLocomotive/Properties/Resources.Designer.cs create mode 100644 ProjectElectricLocomotive/Properties/Resources.resx create mode 100644 ProjectElectricLocomotive/Resources/DownArrow.png create mode 100644 ProjectElectricLocomotive/Resources/LeftArrow.png create mode 100644 ProjectElectricLocomotive/Resources/RightArrow (1).png create mode 100644 ProjectElectricLocomotive/Resources/RightArrow.png create mode 100644 ProjectElectricLocomotive/Resources/UpArrow.png diff --git a/ProjectElectricLocomotive/DirectionType.cs b/ProjectElectricLocomotive/DirectionType.cs new file mode 100644 index 0000000..8cec3e4 --- /dev/null +++ b/ProjectElectricLocomotive/DirectionType.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectElectricLocomotive +{ + public enum DirectionType + { + /// + /// Вверх + /// + Up = 1, + /// + /// Вниз + /// + Down = 2, + /// + /// Влево + /// + Left = 3, + /// + /// Вправо + /// + Right = 4 + } +} diff --git a/ProjectElectricLocomotive/DrawningElectricLocomotive.cs b/ProjectElectricLocomotive/DrawningElectricLocomotive.cs new file mode 100644 index 0000000..9dbdb5e --- /dev/null +++ b/ProjectElectricLocomotive/DrawningElectricLocomotive.cs @@ -0,0 +1,209 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectElectricLocomotive +{ + /// + /// Класс, отвечающий за отрисовку и перемещение обьекта-сущности + /// + public class DrawningElectricLocomotive + { + + /// + /// Класс-сущность + /// + public EntityElectricLocomotive? EntityElectricLocomotive { get; private set; } + /// + /// Ширина окна + /// + private int? _pictureWidth; + /// + /// Высота окна + /// + private int? _pictureHeight; + /// + /// Левая координата прорисовки Электровоза + /// + private int? _startPosX; + /// + /// Верхняя кооридната прорисовки Электровоза + /// + private int? _startPosY; + + /// + /// Ширина прорисовки Локомотива + /// + private readonly int _drawningElectriLocomotiveWidth = 155; + /// + /// Высота прорисовки локомотива + /// + private readonly int _drawningElectricLocomotiveHeight = 100; + + /// + /// Инициализация свойств + /// + /// Скорость + /// Вес + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия обвеса + /// Признак наличия антикрыла + public void Init(int speed, double weight, Color bodyColor, Color + additionalColor, bool pantograph, bool batterystorage) + { + EntityElectricLocomotive = new EntityElectricLocomotive(); + EntityElectricLocomotive.Init(speed, weight, bodyColor, additionalColor, + pantograph, batterystorage); + _pictureWidth = null; + _pictureHeight = null; + _startPosX = null; + _startPosY = null; + + } + /// + /// Установка границ поля + /// + /// Ширина поля + /// Высота поля + /// true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах +public bool SetPictureSize(int width, int height) + { + + // TODO проверка, что объект "влезает" в размеры поля + if(_drawningElectriLocomotiveWidth > width || _drawningElectricLocomotiveHeight > height) + { + return false; + } + if(_startPosX.HasValue && _startPosY.HasValue) + { + if(_startPosX + _drawningElectriLocomotiveWidth > width) + { + _startPosX = width - _drawningElectriLocomotiveWidth; + } + if(_startPosY + _drawningElectricLocomotiveHeight > height) + { + _startPosY = height - _drawningElectricLocomotiveHeight; + } + } + //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + // если влезает, сохраняем границы и корректируем позицию объекта, если она была уже установлена + _pictureWidth = width; + _pictureHeight = height; + return true; + } + public void SetPosition(int x, int y) + { + if (!_pictureHeight.HasValue || !_pictureWidth.HasValue) + { + return; + } + // TODO если при установке объекта в эти координаты, он будет "выходить" за границы формы + if(x < 0 || x + _drawningElectriLocomotiveWidth > _pictureWidth.Value) + { + x = _pictureWidth.Value - _drawningElectriLocomotiveWidth; + } + if(y < 0 || y + _drawningElectricLocomotiveHeight > _pictureHeight.Value) + { + y = _pictureHeight.Value - _drawningElectricLocomotiveHeight; + } + // то надо изменить координаты, чтобы он оставался в этих границах + + _startPosX = x; + _startPosY = y; + } + public bool MoveTransport(DirectionType direction) + { + if (EntityElectricLocomotive == null || !_startPosX.HasValue || + !_startPosY.HasValue) + { + return false; + } + switch (direction) + { + //влево + case DirectionType.Left: + if (_startPosX.Value - EntityElectricLocomotive.Step > 0) + { + _startPosX -= (int)EntityElectricLocomotive.Step; + } + return true; + //вверх + case DirectionType.Up: + if ((_startPosY.Value) - EntityElectricLocomotive.Step > 0) + { + + _startPosY -= (int)EntityElectricLocomotive.Step; + } + return true; + // вправо + case DirectionType.Right: + if (_startPosX.Value + EntityElectricLocomotive.Step < _pictureWidth - _drawningElectriLocomotiveWidth) + { + _startPosX += (int)EntityElectricLocomotive.Step; + } + return true; + //вниз + case DirectionType.Down: + if (_startPosY.Value + EntityElectricLocomotive.Step < _pictureHeight - _drawningElectricLocomotiveHeight) + { + _startPosY += (int)EntityElectricLocomotive.Step; + } + return true; + default: + return false; + } + } + public void DrawTransport(Graphics g) + { + if (EntityElectricLocomotive == null || !_startPosX.HasValue || !_startPosY.HasValue) + { + return; + } + Pen pen = new(Color.Black); + Brush additonalBrush = new SolidBrush(EntityElectricLocomotive.AdditionalColor); + Brush bodyBrush = new SolidBrush(EntityElectricLocomotive.BodyColor); + //границы Электровоза + //колеса + g.DrawEllipse(pen, _startPosX.Value + 10, _startPosY.Value + 65, 20, 20); + g.DrawEllipse(pen, _startPosX.Value + 30, _startPosY.Value + 65, 20, 20); + g.DrawEllipse(pen, _startPosX.Value + 100, _startPosY.Value + 65, 20, 20); + g.DrawEllipse(pen, _startPosX.Value + 120, _startPosY.Value + 65, 20, 20); + //кузов + g.DrawRectangle(pen, _startPosX.Value, _startPosY.Value + 50, 155, 40); + g.DrawLine(pen, _startPosX.Value, _startPosY.Value + 50, _startPosX.Value + 20, _startPosY.Value + 30); + g.DrawRectangle(pen, _startPosX.Value + 20, _startPosY.Value + 30, 135,20 ); + //покраска кузова + g.FillEllipse(Brushes.Black, _startPosX.Value + 10, _startPosY.Value + 85, 20, 20); + g.FillEllipse(Brushes.Black, _startPosX.Value + 30, _startPosY.Value + 85, 20, 20); + g.FillEllipse(Brushes.Black, _startPosX.Value + 100, _startPosY.Value + 85, 20, 20); + g.FillEllipse(Brushes.Black, _startPosX.Value + 120, _startPosY.Value + 85, 20, 20); + g.FillRectangle(bodyBrush, _startPosX.Value+1, _startPosY.Value + 51, 154, 39); + g.FillRectangle(bodyBrush, _startPosX.Value + 21, _startPosY.Value + 31, 134, 19); + + g.DrawRectangle(pen, _startPosX.Value , _startPosY.Value + 50, 155, 10); + g.FillRectangle(additonalBrush, _startPosX.Value + 1, _startPosY.Value + 51, 154, 9); + //g.FillPolygon(Brushes.AliceBlue, _startPosX.Value + 1, _startPosY.Value + 31, _startPosX.Value + 19, _startPosY.Value + 9, _startPosX.Value + 19, _startPosY.Value + 1); + //Пантограф + if (EntityElectricLocomotive.Pantograph) + { + g.DrawLine(pen, _startPosX.Value + 60, _startPosY.Value + 30, _startPosX.Value + 70, _startPosY.Value + 10); + g.DrawLine(pen, _startPosX.Value + 50, _startPosY.Value + 10, _startPosX.Value + 90, _startPosY.Value + 10); + } + //Отсек для батарей + if (EntityElectricLocomotive.BatteryStorage) + { + g.DrawRectangle(pen, _startPosX.Value + 100, _startPosY.Value + 30, 30, 20); + g.FillRectangle(additonalBrush, _startPosX.Value + 101, _startPosY.Value + 31, 29, 19); + g.DrawLine(pen, _startPosX.Value + 120, _startPosY.Value + 40, _startPosX.Value + 115, _startPosY.Value + 50); + g.DrawLine(pen, _startPosX.Value + 115, _startPosY.Value + 40, _startPosX.Value + 120, _startPosY.Value + 40); + g.DrawLine(pen, _startPosX.Value + 120, _startPosY.Value + 30, _startPosX.Value + 115, _startPosY.Value + 40); + } + + } + + } + } + diff --git a/ProjectElectricLocomotive/EntityElectricLocomotive.cs b/ProjectElectricLocomotive/EntityElectricLocomotive.cs new file mode 100644 index 0000000..a50bb96 --- /dev/null +++ b/ProjectElectricLocomotive/EntityElectricLocomotive.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectElectricLocomotive +{ + public class EntityElectricLocomotive + { + + /// + /// Скорость + /// + 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 Pantograph{ get; private set; } + /// + /// Признак (опция) наличия отсека под батареи + /// + public bool BatteryStorage { get; private set; } + /// + /// Шаг перемещения Локомотива + /// + public double Step => Speed * 100 / Weight; + /// + /// Инициализация полей объекта-класса ЭлектроЛокомотива + /// + /// Скорость + /// Вес локомотива + /// Основной цвет + /// Дополнительный цвет + /// Признак "рогов" + /// Признак наличия отсека под батареи + public void Init(int speed, double weight, Color bodyColor, Color + additionalColor, bool pantograph, bool batterystorage) + { + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + Pantograph = pantograph; + BatteryStorage = batterystorage; + + } + + } +} diff --git a/ProjectElectricLocomotive/Form1.Designer.cs b/ProjectElectricLocomotive/Form1.Designer.cs deleted file mode 100644 index 6cd3a18..0000000 --- a/ProjectElectricLocomotive/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace ProjectElectricLocomotive -{ - partial class Form1 - { - /// - /// 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() - { - this.components = new System.ComponentModel.Container(); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Text = "Form1"; - } - - #endregion - } -} \ No newline at end of file diff --git a/ProjectElectricLocomotive/Form1.cs b/ProjectElectricLocomotive/Form1.cs deleted file mode 100644 index eb6a0ea..0000000 --- a/ProjectElectricLocomotive/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace ProjectElectricLocomotive -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} \ No newline at end of file diff --git a/ProjectElectricLocomotive/FormlectricLocomotive.Designer.cs b/ProjectElectricLocomotive/FormlectricLocomotive.Designer.cs new file mode 100644 index 0000000..63d526c --- /dev/null +++ b/ProjectElectricLocomotive/FormlectricLocomotive.Designer.cs @@ -0,0 +1,137 @@ +namespace ProjectElectricLocomotive +{ + partial class FormlectricLocomotive + { + /// + /// 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() + { + pictureBoxElectricLocomotive = new PictureBox(); + buttonCreate = new Button(); + buttonUp = new Button(); + buttonLeft = new Button(); + buttonRight = new Button(); + buttonDown = new Button(); + ((System.ComponentModel.ISupportInitialize)pictureBoxElectricLocomotive).BeginInit(); + SuspendLayout(); + // + // pictureBoxElectricLocomotive + // + pictureBoxElectricLocomotive.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + pictureBoxElectricLocomotive.BackgroundImageLayout = ImageLayout.Stretch; + pictureBoxElectricLocomotive.Location = new Point(9, -12); + pictureBoxElectricLocomotive.Name = "pictureBoxElectricLocomotive"; + pictureBoxElectricLocomotive.Size = new Size(779, 411); + pictureBoxElectricLocomotive.TabIndex = 0; + pictureBoxElectricLocomotive.TabStop = false; + + // + // buttonCreate + // + buttonCreate.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonCreate.Location = new Point(12, 353); + buttonCreate.Name = "buttonCreate"; + buttonCreate.Size = new Size(112, 34); + buttonCreate.TabIndex = 1; + buttonCreate.Text = "Создать"; + buttonCreate.UseVisualStyleBackColor = true; + buttonCreate.Click += buttonCreate_Click; + // + // buttonUp + // + buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonUp.BackgroundImage = Properties.Resources.UpArrow; + buttonUp.BackgroundImageLayout = ImageLayout.Stretch; + buttonUp.Location = new Point(697, 312); + buttonUp.Name = "buttonUp"; + buttonUp.Size = new Size(35, 35); + buttonUp.TabIndex = 2; + buttonUp.UseVisualStyleBackColor = true; + buttonUp.Click += ButtonMove_Click; + // + // buttonLeft + // + buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonLeft.BackgroundImage = Properties.Resources.RightArrow__1_; + buttonLeft.BackgroundImageLayout = ImageLayout.Stretch; + buttonLeft.Location = new Point(656, 352); + buttonLeft.Name = "buttonLeft"; + buttonLeft.Size = new Size(35, 35); + buttonLeft.TabIndex = 3; + buttonLeft.UseVisualStyleBackColor = true; + buttonLeft.Click += ButtonMove_Click; + // + // buttonRight + // + buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonRight.BackgroundImage = Properties.Resources.LeftArrow; + buttonRight.BackgroundImageLayout = ImageLayout.Stretch; + buttonRight.Location = new Point(738, 352); + buttonRight.Name = "buttonRight"; + buttonRight.Size = new Size(35, 35); + buttonRight.TabIndex = 4; + buttonRight.UseVisualStyleBackColor = true; + buttonRight.Click += ButtonMove_Click; + // + // buttonDown + // + buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonDown.BackgroundImage = Properties.Resources.DownArrow; + buttonDown.BackgroundImageLayout = ImageLayout.Stretch; + buttonDown.Location = new Point(697, 352); + buttonDown.Name = "buttonDown"; + buttonDown.Size = new Size(35, 35); + buttonDown.TabIndex = 5; + buttonDown.UseVisualStyleBackColor = true; + buttonDown.Click += ButtonMove_Click; + // + // FormlectricLocomotive + // + AutoScaleDimensions = new SizeF(10F, 25F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(788, 399); + Controls.Add(buttonDown); + Controls.Add(buttonRight); + Controls.Add(buttonLeft); + Controls.Add(buttonUp); + Controls.Add(buttonCreate); + Controls.Add(pictureBoxElectricLocomotive); + Name = "FormlectricLocomotive"; + Text = "ЭлектроВоз"; + + ((System.ComponentModel.ISupportInitialize)pictureBoxElectricLocomotive).EndInit(); + ResumeLayout(false); + } + + #endregion + + private PictureBox pictureBoxElectricLocomotive; + private Button buttonCreate; + private Button buttonUp; + private Button buttonLeft; + private Button buttonRight; + private Button buttonDown; + } +} \ No newline at end of file diff --git a/ProjectElectricLocomotive/FormlectricLocomotive.cs b/ProjectElectricLocomotive/FormlectricLocomotive.cs new file mode 100644 index 0000000..9d821fe --- /dev/null +++ b/ProjectElectricLocomotive/FormlectricLocomotive.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ProjectElectricLocomotive +{ + public partial class FormlectricLocomotive : Form + { + private void Draw() + { + if (_drawnningElectricLocomotive == null) + { + return; + } + + Bitmap bmp = new(pictureBoxElectricLocomotive.Width, pictureBoxElectricLocomotive.Height); + Graphics gr = Graphics.FromImage(bmp); + _drawnningElectricLocomotive.DrawTransport(gr); + pictureBoxElectricLocomotive.Image = bmp; + } + + private DrawningElectricLocomotive? _drawnningElectricLocomotive; + public FormlectricLocomotive() + { + InitializeComponent(); + } + + + private void buttonCreate_Click(object sender, EventArgs e) + { + Random random = new(); + _drawnningElectricLocomotive = new DrawningElectricLocomotive(); + _drawnningElectricLocomotive.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))); + _drawnningElectricLocomotive.SetPictureSize(pictureBoxElectricLocomotive.Width, pictureBoxElectricLocomotive.Height); + _drawnningElectricLocomotive.SetPosition(random.Next(10, 100), random.Next(10, 100)); + + Draw(); + } + + private void ButtonMove_Click(object sender, EventArgs e) + { + if (_drawnningElectricLocomotive == null) + { + return; + } + string name = ((Button)sender)?.Name ?? string.Empty; + bool result = false; + switch (name) + { + case "buttonUp": + result = + _drawnningElectricLocomotive.MoveTransport(DirectionType.Up); + break; + case "buttonDown": + result = + _drawnningElectricLocomotive.MoveTransport(DirectionType.Down); + break; + case "buttonLeft": + result = + _drawnningElectricLocomotive.MoveTransport(DirectionType.Left); + break; + case "buttonRight": + result = + _drawnningElectricLocomotive.MoveTransport(DirectionType.Right); + break; + } + if (result) + { + Draw(); + } + + } + } +} diff --git a/ProjectElectricLocomotive/FormlectricLocomotive.resx b/ProjectElectricLocomotive/FormlectricLocomotive.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectElectricLocomotive/FormlectricLocomotive.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/ProjectElectricLocomotive/Program.cs b/ProjectElectricLocomotive/Program.cs index 9a38110..d71f655 100644 --- a/ProjectElectricLocomotive/Program.cs +++ b/ProjectElectricLocomotive/Program.cs @@ -11,7 +11,7 @@ namespace ProjectElectricLocomotive // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new Form1()); + Application.Run(new FormlectricLocomotive()); } } } \ No newline at end of file diff --git a/ProjectElectricLocomotive/ProjectElectricLocomotive.csproj b/ProjectElectricLocomotive/ProjectElectricLocomotive.csproj index e1a0735..244387d 100644 --- a/ProjectElectricLocomotive/ProjectElectricLocomotive.csproj +++ b/ProjectElectricLocomotive/ProjectElectricLocomotive.csproj @@ -8,4 +8,19 @@ enable + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/ProjectElectricLocomotive/Properties/Resources.Designer.cs b/ProjectElectricLocomotive/Properties/Resources.Designer.cs new file mode 100644 index 0000000..5ce2252 --- /dev/null +++ b/ProjectElectricLocomotive/Properties/Resources.Designer.cs @@ -0,0 +1,113 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace ProjectElectricLocomotive.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("ProjectElectricLocomotive.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 DownArrow { + get { + object obj = ResourceManager.GetObject("DownArrow", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap LeftArrow { + get { + object obj = ResourceManager.GetObject("LeftArrow", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap RightArrow { + get { + object obj = ResourceManager.GetObject("RightArrow", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap RightArrow__1_ { + get { + object obj = ResourceManager.GetObject("RightArrow (1)", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap UpArrow { + get { + object obj = ResourceManager.GetObject("UpArrow", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/ProjectElectricLocomotive/Properties/Resources.resx b/ProjectElectricLocomotive/Properties/Resources.resx new file mode 100644 index 0000000..2582cf4 --- /dev/null +++ b/ProjectElectricLocomotive/Properties/Resources.resx @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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\LeftArrow.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\RightArrow.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\DownArrow.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\UpArrow.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\RightArrow (1).png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/ProjectElectricLocomotive/Resources/DownArrow.png b/ProjectElectricLocomotive/Resources/DownArrow.png new file mode 100644 index 0000000000000000000000000000000000000000..1341e3564ee93ab746f2220f3a456ff578dff636 GIT binary patch literal 5610 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 bo}m`&++G-z9#w(=iUl^7_7(-^-dFwy;TVla literal 0 HcmV?d00001 diff --git a/ProjectElectricLocomotive/Resources/LeftArrow.png b/ProjectElectricLocomotive/Resources/LeftArrow.png new file mode 100644 index 0000000000000000000000000000000000000000..ecf4448ff091361cfdce3e53ab82222e66802f4a GIT binary patch literal 5144 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 oe)iA8KY08<&>_~2wXSegt{U0D*tAzW@LL literal 0 HcmV?d00001 diff --git a/ProjectElectricLocomotive/Resources/RightArrow (1).png b/ProjectElectricLocomotive/Resources/RightArrow (1).png new file mode 100644 index 0000000000000000000000000000000000000000..15d0af76b0dea362023523ff8b74af9108bbaf2d GIT binary patch literal 5107 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 NkZ;4c)osC@{2%ZPb`Jmm literal 0 HcmV?d00001 diff --git a/ProjectElectricLocomotive/Resources/RightArrow.png b/ProjectElectricLocomotive/Resources/RightArrow.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa32561092c28aed065ef9113e08eaeb22fc580 GIT binary patch literal 5555 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 J{9~>+{twK;VKo2% literal 0 HcmV?d00001 diff --git a/ProjectElectricLocomotive/Resources/UpArrow.png b/ProjectElectricLocomotive/Resources/UpArrow.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa32561092c28aed065ef9113e08eaeb22fc580 GIT binary patch literal 5555 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 J{9~>+{twK;VKo2% literal 0 HcmV?d00001 -- 2.25.1