diff --git a/ProjectLiner/ProjectLiner/DirectionType.cs b/ProjectLiner/ProjectLiner/DirectionType.cs new file mode 100644 index 0000000..8d54037 --- /dev/null +++ b/ProjectLiner/ProjectLiner/DirectionType.cs @@ -0,0 +1,9 @@ +namespace ProjectLiner; + +public enum DirectionType +{ + Up = 1, + Down = 2, + Left = 3, + Right = 4, +} diff --git a/ProjectLiner/ProjectLiner/DrawingLiner.cs b/ProjectLiner/ProjectLiner/DrawingLiner.cs new file mode 100644 index 0000000..f472d0e --- /dev/null +++ b/ProjectLiner/ProjectLiner/DrawingLiner.cs @@ -0,0 +1,157 @@ +namespace ProjectLiner; +public class DrawingLiner +{ + public LinerEntity? LinerEntity { get; set; } + + private int? _pictureWidth; + + private int? _pictureHeight; + + private int? _startPosX; + + private int? _startPosY; + + private readonly int _drawingLinerWidth = 140; + + private readonly int _drawingLinerHeight = 50; + public void Init( + int speed, double weight, Color primaryColor, Color secondaryColor, + LinerEntityType type, int capacity, int maxPassengers, + bool hasExtraDeck, bool hasPool + ) + { + LinerEntity = new LinerEntity(); + LinerEntity.Init(speed, weight, primaryColor, secondaryColor, + type, capacity, maxPassengers, hasExtraDeck, hasPool); + _pictureWidth = null; + _pictureHeight = null; + _startPosX = null; + _startPosY = null; + } + public bool SetPictureSize(int width, int height) + { + if (_drawingLinerWidth <= width && _drawingLinerHeight <= height) + { + _pictureWidth = width; + _pictureHeight = height; + return true; + } else + { + return false; + } + } + public void SetPosition(int x, int y) + { + if (!_pictureHeight.HasValue || !_pictureWidth.HasValue) + { + return; + } + if (x < 0) + { + x = 0; + } + else if (x > _pictureWidth.Value - _drawingLinerWidth) + { + x = _pictureWidth.Value - _drawingLinerWidth; + } + if (y < 0) + { + y = 0; + } + else if (y > _pictureHeight.Value - _drawingLinerHeight) + { + y = _pictureHeight.Value - _drawingLinerHeight; + } + _startPosX = x; + _startPosY = y; + } + public bool MoveTransport(DirectionType direction) + { + if (LinerEntity == null || + !_startPosX.HasValue || !_startPosY.HasValue || + !_pictureWidth.HasValue || !_pictureHeight.HasValue) + { + return false; + } + switch (direction) + { + //left + case DirectionType.Left: + if (_startPosX.Value - LinerEntity.Step > 0) + { + _startPosX -= (int)LinerEntity.Step; + } + break; + //up + case DirectionType.Up: + if (_startPosY.Value - LinerEntity.Step > 0) + { + _startPosY -= (int)LinerEntity.Step; + } + break; + //right + case DirectionType.Right: + if (_startPosX.Value + LinerEntity.Step < + _pictureWidth.Value - _drawingLinerWidth) + { + _startPosX += (int)LinerEntity.Step; + } + break; + //down + case DirectionType.Down: + if (_startPosY.Value + LinerEntity.Step < + _pictureHeight.Value - _drawingLinerHeight) + { + _startPosY += (int)LinerEntity.Step; + } + break; + default: + return false; + } + return true; + } + public void DrawTransport(Graphics g) + { + if (LinerEntity == null || + !_startPosX.HasValue || !_startPosY.HasValue) + return; + + int x = _startPosX.Value; + int y = _startPosY.Value; + + Pen borderPen = new(Color.Black); + Brush bodyBrush = new SolidBrush(LinerEntity.PrimaryColor); // Hull + Brush additionalBrush = new SolidBrush(LinerEntity.SecondaryColor); + Brush deckBrush = new SolidBrush(Color.White); // Deck + Brush poolBrush = new SolidBrush(Color.Cyan); // Pool + + // body (hull) + Point[] hullPoints = { + new Point(x + 20, y + 50), // bottom Left + new Point(x + 120, y + 50), // bottom right + new Point(x + 140, y + 20), // Top left + new Point(x , y + 20) // Top right + }; + + g.FillPolygon(bodyBrush, hullPoints); + g.DrawPolygon(borderPen, hullPoints); + + // first deck + g.FillRectangle(deckBrush, x + 30, y + 10, 100, 10); + g.DrawRectangle(borderPen, x + 30, y + 10, 100, 10); + + if (LinerEntity.HasPool) + { + // pool on the deck + g.FillEllipse(poolBrush, x + 35, y + 5, 30, 10); + g.DrawEllipse(borderPen, x + 35, y + 5, 30, 10); + } + + if (LinerEntity.HasExtraDeck) + { + // optional deck + g.FillRectangle(additionalBrush, x + 70, y, 50, 10); + g.DrawRectangle(borderPen, x + 70, y, 50, 10); + } + } +} diff --git a/ProjectLiner/ProjectLiner/Form1.Designer.cs b/ProjectLiner/ProjectLiner/Form1.Designer.cs deleted file mode 100644 index 10a56d5..0000000 --- a/ProjectLiner/ProjectLiner/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace ProjectLiner -{ - 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 - } -} diff --git a/ProjectLiner/ProjectLiner/Form1.cs b/ProjectLiner/ProjectLiner/Form1.cs deleted file mode 100644 index baabe7e..0000000 --- a/ProjectLiner/ProjectLiner/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace ProjectLiner -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} diff --git a/ProjectLiner/ProjectLiner/FormLiner.Designer.cs b/ProjectLiner/ProjectLiner/FormLiner.Designer.cs new file mode 100644 index 0000000..c7948ba --- /dev/null +++ b/ProjectLiner/ProjectLiner/FormLiner.Designer.cs @@ -0,0 +1,143 @@ +namespace ProjectLiner +{ + partial class FormLiner + { + /// + /// 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() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormLiner)); + pictureBoxLiner = new PictureBox(); + buttonCreateLiner = new Button(); + buttonMoveLeft = new Button(); + buttonMoveUp = new Button(); + buttonMoveDown = new Button(); + buttonMoveRight = new Button(); + ((System.ComponentModel.ISupportInitialize)pictureBoxLiner).BeginInit(); + SuspendLayout(); + // + // pictureBoxLiner + // + pictureBoxLiner.Dock = DockStyle.Fill; + pictureBoxLiner.Location = new Point(0, 0); + pictureBoxLiner.Margin = new Padding(3, 2, 3, 2); + pictureBoxLiner.Name = "pictureBoxLiner"; + pictureBoxLiner.Size = new Size(995, 620); + pictureBoxLiner.TabIndex = 0; + pictureBoxLiner.TabStop = false; + // + // buttonCreateLiner + // + buttonCreateLiner.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonCreateLiner.Location = new Point(10, 589); + buttonCreateLiner.Margin = new Padding(3, 2, 3, 2); + buttonCreateLiner.Name = "buttonCreateLiner"; + buttonCreateLiner.Size = new Size(82, 22); + buttonCreateLiner.TabIndex = 1; + buttonCreateLiner.Text = "Create"; + buttonCreateLiner.UseVisualStyleBackColor = true; + buttonCreateLiner.Click += ButtonCreateLiner_Click; + // + // buttonMoveLeft + // + buttonMoveLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonMoveLeft.BackgroundImage = Properties.Resources.icons8_arrow_left_60; + buttonMoveLeft.BackgroundImageLayout = ImageLayout.Stretch; + buttonMoveLeft.Location = new Point(889, 585); + buttonMoveLeft.Margin = new Padding(3, 2, 3, 2); + buttonMoveLeft.Name = "buttonMoveLeft"; + buttonMoveLeft.Size = new Size(31, 26); + buttonMoveLeft.TabIndex = 2; + buttonMoveLeft.UseVisualStyleBackColor = true; + buttonMoveLeft.Click += ButtonMove_Click; + // + // buttonMoveUp + // + buttonMoveUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonMoveUp.BackgroundImage = Properties.Resources.icons8_arrow_up_60; + buttonMoveUp.BackgroundImageLayout = ImageLayout.Stretch; + buttonMoveUp.Location = new Point(925, 554); + buttonMoveUp.Margin = new Padding(3, 2, 3, 2); + buttonMoveUp.Name = "buttonMoveUp"; + buttonMoveUp.Size = new Size(31, 26); + buttonMoveUp.TabIndex = 3; + buttonMoveUp.UseVisualStyleBackColor = true; + buttonMoveUp.Click += ButtonMove_Click; + // + // buttonMoveDown + // + buttonMoveDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonMoveDown.BackgroundImage = Properties.Resources.icons8_arrow_down_60; + buttonMoveDown.BackgroundImageLayout = ImageLayout.Stretch; + buttonMoveDown.Location = new Point(925, 585); + buttonMoveDown.Margin = new Padding(3, 2, 3, 2); + buttonMoveDown.Name = "buttonMoveDown"; + buttonMoveDown.Size = new Size(31, 26); + buttonMoveDown.TabIndex = 4; + buttonMoveDown.UseVisualStyleBackColor = true; + buttonMoveDown.Click += ButtonMove_Click; + // + // buttonMoveRight + // + buttonMoveRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonMoveRight.BackgroundImage = (Image)resources.GetObject("buttonMoveRight.BackgroundImage"); + buttonMoveRight.BackgroundImageLayout = ImageLayout.Stretch; + buttonMoveRight.Location = new Point(961, 585); + buttonMoveRight.Margin = new Padding(3, 2, 3, 2); + buttonMoveRight.Name = "buttonMoveRight"; + buttonMoveRight.Size = new Size(31, 26); + buttonMoveRight.TabIndex = 5; + buttonMoveRight.UseVisualStyleBackColor = true; + buttonMoveRight.Click += ButtonMove_Click; + // + // FormLiner + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(995, 620); + Controls.Add(buttonMoveRight); + Controls.Add(buttonMoveDown); + Controls.Add(buttonMoveUp); + Controls.Add(buttonMoveLeft); + Controls.Add(buttonCreateLiner); + Controls.Add(pictureBoxLiner); + Margin = new Padding(3, 2, 3, 2); + Name = "FormLiner"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Liner"; + ((System.ComponentModel.ISupportInitialize)pictureBoxLiner).EndInit(); + ResumeLayout(false); + } + + #endregion + + private PictureBox pictureBoxLiner; + private Button buttonCreateLiner; + private Button buttonMoveLeft; + private Button buttonMoveUp; + private Button buttonMoveDown; + private Button buttonMoveRight; + } +} \ No newline at end of file diff --git a/ProjectLiner/ProjectLiner/FormLiner.cs b/ProjectLiner/ProjectLiner/FormLiner.cs new file mode 100644 index 0000000..9b438a5 --- /dev/null +++ b/ProjectLiner/ProjectLiner/FormLiner.cs @@ -0,0 +1,69 @@ +namespace ProjectLiner +{ + public partial class FormLiner : Form + { + public DrawingLiner? _drawingLiner; + public FormLiner() + { + InitializeComponent(); + } + + private void DrawTransoprt() + { + if (_drawingLiner == null) + { + return; + } + Bitmap bitmap = new(pictureBoxLiner.Width, pictureBoxLiner.Height); + Graphics graphics = Graphics.FromImage(bitmap); + _drawingLiner?.DrawTransport(graphics); + pictureBoxLiner.Image = bitmap; + } + + private void ButtonCreateLiner_Click(object sender, EventArgs e) + { + Random random = new(); + _drawingLiner = new DrawingLiner(); + _drawingLiner.Init(random.Next(100, 300), random.Next(1000, 3000), + Color.FromArgb(random.Next(0, 255), random.Next(0, 255), random.Next(0, 255)), + Color.FromArgb(random.Next(0, 255), random.Next(0, 255), random.Next(0, 255)), + LinerEntityType.Cargo, random.Next(1000, 10000), random.Next(10, 100), + random.Next(0, 2) == 1, random.Next(0, 2) == 1); + _drawingLiner.SetPictureSize(pictureBoxLiner.Width, pictureBoxLiner.Height); + _drawingLiner.SetPosition(random.Next(0, pictureBoxLiner.Width), random.Next(0, pictureBoxLiner.Height)); + + DrawTransoprt(); + } + + private void ButtonMove_Click(object sender, EventArgs e) + { + if (_drawingLiner == null) + { + return; + } + + string name = ((Button)sender)?.Name ?? string.Empty; + bool result = false; + switch (name) + { + case "buttonMoveUp": + result = _drawingLiner.MoveTransport(DirectionType.Up); + break; + case "buttonMoveDown": + result = _drawingLiner.MoveTransport(DirectionType.Down); + break; + case "buttonMoveLeft": + result = _drawingLiner.MoveTransport(DirectionType.Left); + break; + case "buttonMoveRight": + result = _drawingLiner.MoveTransport(DirectionType.Right); + break; + } + + if (result) + { + DrawTransoprt(); + } + } + } +} diff --git a/ProjectLiner/ProjectLiner/FormLiner.resx b/ProjectLiner/ProjectLiner/FormLiner.resx new file mode 100644 index 0000000..f1f228d --- /dev/null +++ b/ProjectLiner/ProjectLiner/FormLiner.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL + DAAACwwBP0AiyAAAARZJREFUaEPtmTsKwlAQRbMBcQNi69IEG7VS0A1Z6M78V9roHUgghJuvIJnJPXCa + wAwc0ryXJEIIIYQQQggRgVHqIFjAd+raHkTnCj85tzA0+djMPQwLCzbDRrPYzJDRLDRvuGgWWTRUNAtk + holmcWWGiGZhVf4UPYVH+IRseV/tdDix2AtkCz3YOtreLFvkyVbRD8iWeLNxNBv26grWwga9+oK192k2 + 6NXBBS9hLXfIhr25gY04QbbAk41jjRk8Q7bIg61iMybwAG+QLe2rnWL7Aguqcgddw6LKdB9rsDBmiFiD + xRUNE2uwwLyhYg0WmRku1mChZshYY1CxRvEzk+tDRRPmcFC/S41xqhBCCCGEEEL8kyT5Avbp6yDpsmlv + AAAAAElFTkSuQmCC + + + \ No newline at end of file diff --git a/ProjectLiner/ProjectLiner/LinerEntity.cs b/ProjectLiner/ProjectLiner/LinerEntity.cs new file mode 100644 index 0000000..e7a740a --- /dev/null +++ b/ProjectLiner/ProjectLiner/LinerEntity.cs @@ -0,0 +1,39 @@ +namespace ProjectLiner; +public enum LinerEntityType +{ + Passenger, + Cargo, + Military, + Mixed +} + +public class LinerEntity +{ + public int Speed { get; private set; } + public double Weight { get; private set; } + public Color PrimaryColor { get; private set; } + public Color SecondaryColor { get; private set; } + public LinerEntityType Type { get; private set; } + public int Capacity { get; private set; } + public int MaxPassengers { get; private set; } + public bool HasExtraDeck { get; private set; } + public bool HasPool { get; private set; } + public double Step => Speed / (Weight / 100); + + public void Init( + int speed, double weight, Color primaryColor, Color secondaryColor, + LinerEntityType type, int capacity, int maxPassengers, + bool hasExtraDeck, bool hasPool + ) + { + Speed = speed; + Weight = weight; + PrimaryColor = primaryColor; + SecondaryColor = secondaryColor; + Type = type; + Capacity = capacity; + MaxPassengers = maxPassengers; + HasExtraDeck = hasExtraDeck; + HasPool = hasPool; + } +} diff --git a/ProjectLiner/ProjectLiner/Program.cs b/ProjectLiner/ProjectLiner/Program.cs index 6a14f7d..b3dc92e 100644 --- a/ProjectLiner/ProjectLiner/Program.cs +++ b/ProjectLiner/ProjectLiner/Program.cs @@ -11,7 +11,7 @@ namespace ProjectLiner // 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 FormLiner()); } } } \ No newline at end of file diff --git a/ProjectLiner/ProjectLiner/ProjectLiner.csproj b/ProjectLiner/ProjectLiner/ProjectLiner.csproj index 663fdb8..af03d74 100644 --- a/ProjectLiner/ProjectLiner/ProjectLiner.csproj +++ b/ProjectLiner/ProjectLiner/ProjectLiner.csproj @@ -8,4 +8,19 @@ enable + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/ProjectLiner/ProjectLiner/Properties/Resources.Designer.cs b/ProjectLiner/ProjectLiner/Properties/Resources.Designer.cs new file mode 100644 index 0000000..fb9eb87 --- /dev/null +++ b/ProjectLiner/ProjectLiner/Properties/Resources.Designer.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace ProjectLiner.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("ProjectLiner.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 icons8_arrow_down_60 { + get { + object obj = ResourceManager.GetObject("icons8-arrow-down-60", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap icons8_arrow_left_60 { + get { + object obj = ResourceManager.GetObject("icons8-arrow-left-60", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap icons8_arrow_right_60 { + get { + object obj = ResourceManager.GetObject("icons8-arrow-right-60", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap icons8_arrow_up_60 { + get { + object obj = ResourceManager.GetObject("icons8-arrow-up-60", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/ProjectLiner/ProjectLiner/Form1.resx b/ProjectLiner/ProjectLiner/Properties/Resources.resx similarity index 82% rename from ProjectLiner/ProjectLiner/Form1.resx rename to ProjectLiner/ProjectLiner/Properties/Resources.resx index 1af7de1..becc2c8 100644 --- a/ProjectLiner/ProjectLiner/Form1.resx +++ b/ProjectLiner/ProjectLiner/Properties/Resources.resx @@ -117,4 +117,17 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\icons8-arrow-down-60.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-arrow-up-60.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-arrow-right-60.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-arrow-left-60.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/ProjectLiner/ProjectLiner/Resources/icons8-arrow-down-60.png b/ProjectLiner/ProjectLiner/Resources/icons8-arrow-down-60.png new file mode 100644 index 0000000..0382f01 Binary files /dev/null and b/ProjectLiner/ProjectLiner/Resources/icons8-arrow-down-60.png differ diff --git a/ProjectLiner/ProjectLiner/Resources/icons8-arrow-left-60.png b/ProjectLiner/ProjectLiner/Resources/icons8-arrow-left-60.png new file mode 100644 index 0000000..aa76943 Binary files /dev/null and b/ProjectLiner/ProjectLiner/Resources/icons8-arrow-left-60.png differ diff --git a/ProjectLiner/ProjectLiner/Resources/icons8-arrow-right-60.png b/ProjectLiner/ProjectLiner/Resources/icons8-arrow-right-60.png new file mode 100644 index 0000000..6aabd5d Binary files /dev/null and b/ProjectLiner/ProjectLiner/Resources/icons8-arrow-right-60.png differ diff --git a/ProjectLiner/ProjectLiner/Resources/icons8-arrow-up-60.png b/ProjectLiner/ProjectLiner/Resources/icons8-arrow-up-60.png new file mode 100644 index 0000000..bc59782 Binary files /dev/null and b/ProjectLiner/ProjectLiner/Resources/icons8-arrow-up-60.png differ