From 5f13bd979fb822089e0c330d5a13e101bcc51857 Mon Sep 17 00:00:00 2001 From: VladaM Date: Tue, 13 Feb 2024 15:56:17 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=20=E2=84=961?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GasolineTanker/DirectionType.cs | 27 +++ .../GasolineTanker/DrawningGasolineTanker.cs | 216 ++++++++++++++++++ .../GasolineTanker/EntityGasolineTanker.cs | 63 +++++ .../GasolineTanker/Form1.Designer.cs | 39 ---- GasolineTanker/GasolineTanker/Form1.cs | 10 - .../FormGasolineTanker.Designer.cs | 134 +++++++++++ .../GasolineTanker/FormGasolineTanker.cs | 102 +++++++++ .../{Form1.resx => FormGasolineTanker.resx} | 50 ++-- .../GasolineTanker/GasolineTanker.csproj | 15 ++ GasolineTanker/GasolineTanker/Program.cs | 2 +- .../Properties/Resources.Designer.cs | 103 +++++++++ .../GasolineTanker/Properties/Resources.resx | 133 +++++++++++ .../GasolineTanker/Resources/arrowDown.jpg | Bin 0 -> 3194 bytes .../GasolineTanker/Resources/arrowLeft.jpg | Bin 0 -> 3195 bytes .../GasolineTanker/Resources/arrowRight.jpg | Bin 0 -> 3604 bytes .../GasolineTanker/Resources/arrowUp.jpg | Bin 0 -> 3525 bytes 16 files changed, 819 insertions(+), 75 deletions(-) create mode 100644 GasolineTanker/GasolineTanker/DirectionType.cs create mode 100644 GasolineTanker/GasolineTanker/DrawningGasolineTanker.cs create mode 100644 GasolineTanker/GasolineTanker/EntityGasolineTanker.cs delete mode 100644 GasolineTanker/GasolineTanker/Form1.Designer.cs delete mode 100644 GasolineTanker/GasolineTanker/Form1.cs create mode 100644 GasolineTanker/GasolineTanker/FormGasolineTanker.Designer.cs create mode 100644 GasolineTanker/GasolineTanker/FormGasolineTanker.cs rename GasolineTanker/GasolineTanker/{Form1.resx => FormGasolineTanker.resx} (93%) create mode 100644 GasolineTanker/GasolineTanker/Properties/Resources.Designer.cs create mode 100644 GasolineTanker/GasolineTanker/Properties/Resources.resx create mode 100644 GasolineTanker/GasolineTanker/Resources/arrowDown.jpg create mode 100644 GasolineTanker/GasolineTanker/Resources/arrowLeft.jpg create mode 100644 GasolineTanker/GasolineTanker/Resources/arrowRight.jpg create mode 100644 GasolineTanker/GasolineTanker/Resources/arrowUp.jpg diff --git a/GasolineTanker/GasolineTanker/DirectionType.cs b/GasolineTanker/GasolineTanker/DirectionType.cs new file mode 100644 index 0000000..da318a1 --- /dev/null +++ b/GasolineTanker/GasolineTanker/DirectionType.cs @@ -0,0 +1,27 @@ +namespace GasolineTanker; + +/// +/// Направление перемещения +/// +public enum DirectionType +{ + /// + /// Вверх + /// + Up = 1, + + /// + /// Вниз + /// + Down = 2, + + /// + /// Влево + /// + Left = 3, + + /// + /// Вправо + /// + Right = 4 +} diff --git a/GasolineTanker/GasolineTanker/DrawningGasolineTanker.cs b/GasolineTanker/GasolineTanker/DrawningGasolineTanker.cs new file mode 100644 index 0000000..a4ea87f --- /dev/null +++ b/GasolineTanker/GasolineTanker/DrawningGasolineTanker.cs @@ -0,0 +1,216 @@ +namespace GasolineTanker; + +/// +/// Класс, отвечающий за прорисовку и перемещение объекта-сущности +/// +public class DrawningGasolineTanker +{ + /// + /// Класс-сущность + /// + public EntityGasolineTanker? EntityGasolineTanker { get; private set; } + + /// + /// Ширина окна + /// + private int? _pictureWidth; + + /// + /// Высота окна + /// + private int? _pictureHeight; + + /// + /// Левая координата прорисовки грузовика + /// + private int? _startPosX; + + /// + /// Верхняя кооридната прорисовки грузовика + /// + private int? _startPosY; + + /// + /// Ширина прорисовки грузовика + /// + private readonly int _drawningGasolineTankerWidth = 155; + + /// + /// Высота прорисовки грузовика + /// + private readonly int _drawningGasolineTankerHeight = 95; + + + + /// + /// Инициализация свойств + /// + /// Скорость + /// Вес автомобиля + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия сигнального маячка + /// Признак наличия цистерны + + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool signalBeacon, bool cistern) + { + EntityGasolineTanker = new EntityGasolineTanker(); + EntityGasolineTanker.Init(speed, weight, bodyColor, additionalColor, signalBeacon, cistern); + _pictureWidth = null; + _pictureHeight = null; + _startPosX = null; + _startPosY = null; + } + + + /// + /// Установка границ поля + /// + /// Ширина поля + /// Высота поля + /// true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах + + public bool SetPictureSize(int width, int height) + { + if (width >= _drawningGasolineTankerWidth && height >= _drawningGasolineTankerHeight) + { + _pictureWidth = width; + _pictureHeight = height; + return true; + } + return false; + } + + /// + /// Установка позиции + /// + /// Координата X + /// Координата Y + public void SetPosition(int x, int y) + { + if (!_pictureHeight.HasValue || !_pictureWidth.HasValue) + { + return; + } + + int endOfDrawingWidth = x + _drawningGasolineTankerWidth; + int endOfDrawingHeight = y + _drawningGasolineTankerHeight; + + _startPosX = x; + _startPosY = y; + if (endOfDrawingWidth > _pictureWidth) + { + _startPosX = x - (endOfDrawingWidth - _pictureWidth); + } + if (endOfDrawingHeight > _pictureHeight) + { + _startPosY = y - (endOfDrawingHeight - _pictureHeight); + } + } + + + /// + /// Изменение направления перемещения + /// + /// Направление + /// true - перемещене выполнено, false - перемещение невозможно + public bool MoveTransport(DirectionType direction) + { + if (EntityGasolineTanker == null || !_startPosX.HasValue || !_startPosY.HasValue) + { + return false; + } + + switch (direction) + { + //влево + case DirectionType.Left: + if (_startPosX.Value - EntityGasolineTanker.Step > 0) + { + _startPosX -= (int)EntityGasolineTanker.Step; + } + return true; + //вверх + case DirectionType.Up: + if (_startPosY.Value - EntityGasolineTanker.Step > 0) + { + _startPosY -= (int)EntityGasolineTanker.Step; + } + return true; + // вправо + case DirectionType.Right: + if (_startPosX.Value + _drawningGasolineTankerWidth + EntityGasolineTanker.Step < _pictureWidth) + { + _startPosX += (int)EntityGasolineTanker.Step; + } + return true; + //вниз + case DirectionType.Down: + if (_startPosY.Value + _drawningGasolineTankerHeight + EntityGasolineTanker.Step < _pictureHeight) + { + _startPosY += (int)EntityGasolineTanker.Step; + } + return true; + default: + return false; + } + } + + + /// + /// Прорисовка объекта + /// + /// + + public void DrawTransport(Graphics g) + { + if (EntityGasolineTanker == null || !_startPosX.HasValue || !_startPosY.HasValue) + { + return; + } + + Pen pen = new(Color.Black); + Brush additionalBrush = new SolidBrush(EntityGasolineTanker.AdditionalColor); + + // Границы бензовоза + + g.DrawRectangle(pen, _startPosX.Value + 120, _startPosY.Value + 20, 25, 25); + g.DrawRectangle(pen, _startPosX.Value + 115, _startPosY.Value + 15, 40, 40); + g.DrawRectangle(pen, _startPosX.Value + 25, _startPosY.Value + 55, 130, 15); + + // Колеса + + Brush brBlack = new SolidBrush(Color.Black); + g.FillEllipse(brBlack, _startPosX.Value + 130, _startPosY.Value + 70, 25, 25); + g.FillEllipse(brBlack, _startPosX.Value + 30, _startPosY.Value + 70, 25, 25); + g.FillEllipse(brBlack, _startPosX.Value + 55, _startPosY.Value + 70, 25, 25); + + // Кузов + + Brush br = new SolidBrush(EntityGasolineTanker.BodyColor); + g.FillRectangle(br, _startPosX.Value + 115, _startPosY.Value + 15, 40, 40); + g.FillRectangle(br, _startPosX.Value + 25, _startPosY.Value + 55, 130, 15); + + // Стекло + + Brush brBlue = new SolidBrush(Color.LightBlue); + g.FillRectangle(brBlue, _startPosX.Value + 120, _startPosY.Value + 20, 25, 25); + + // Цистерна + + if (EntityGasolineTanker.Cistern) + { + g.FillRectangle(additionalBrush, _startPosX.Value + 25, _startPosY.Value + 15, 90, 40); + g.FillRectangle(additionalBrush, _startPosX.Value + 80, _startPosY.Value + 10, 10, 5); + } + + // Сигнальный маячок + + if (EntityGasolineTanker.SignalBeacon) + { + g.FillRectangle(additionalBrush, _startPosX.Value + 145, _startPosY.Value + 5, 10, 10); + } + } + +} + diff --git a/GasolineTanker/GasolineTanker/EntityGasolineTanker.cs b/GasolineTanker/GasolineTanker/EntityGasolineTanker.cs new file mode 100644 index 0000000..ded7f1d --- /dev/null +++ b/GasolineTanker/GasolineTanker/EntityGasolineTanker.cs @@ -0,0 +1,63 @@ +namespace GasolineTanker; + +/// +/// Класс-сущность "Бензовоз" +/// + +public class EntityGasolineTanker +{ + /// + /// Скорость + /// + 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 SignalBeacon { get; private set; } + + /// + /// Признак (опция) наличия цистерны + /// + public bool Cistern { get; private set; } + + /// + /// Шаг перемещения автомобиля + /// + public double Step => Speed * 100 / Weight; + + /// + /// Инициализация полей объекта-класса спортивного автомобиля + /// + /// Скорость + /// Вес автомобиля + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия сигнального маячка + /// Признак наличия цистерны + + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool signalBeacon, bool cistern) + { + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + SignalBeacon = signalBeacon; + Cistern = cistern; + } +} diff --git a/GasolineTanker/GasolineTanker/Form1.Designer.cs b/GasolineTanker/GasolineTanker/Form1.Designer.cs deleted file mode 100644 index 8766cfd..0000000 --- a/GasolineTanker/GasolineTanker/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace GasolineTanker -{ - 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/GasolineTanker/GasolineTanker/Form1.cs b/GasolineTanker/GasolineTanker/Form1.cs deleted file mode 100644 index db98665..0000000 --- a/GasolineTanker/GasolineTanker/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace GasolineTanker -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} diff --git a/GasolineTanker/GasolineTanker/FormGasolineTanker.Designer.cs b/GasolineTanker/GasolineTanker/FormGasolineTanker.Designer.cs new file mode 100644 index 0000000..7db589f --- /dev/null +++ b/GasolineTanker/GasolineTanker/FormGasolineTanker.Designer.cs @@ -0,0 +1,134 @@ +namespace GasolineTanker +{ + partial class FormGasolineTanker + { + /// + /// 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() + { + pictureBoxGasolineTanker = new PictureBox(); + ButtonCreateGasolineTanker = new Button(); + buttonRight = new Button(); + buttonDown = new Button(); + buttonUp = new Button(); + buttonLeft = new Button(); + ((System.ComponentModel.ISupportInitialize)pictureBoxGasolineTanker).BeginInit(); + SuspendLayout(); + // + // pictureBoxGasolineTanker + // + pictureBoxGasolineTanker.Dock = DockStyle.Fill; + pictureBoxGasolineTanker.Location = new Point(0, 0); + pictureBoxGasolineTanker.Name = "pictureBoxGasolineTanker"; + pictureBoxGasolineTanker.Size = new Size(945, 474); + pictureBoxGasolineTanker.TabIndex = 0; + pictureBoxGasolineTanker.TabStop = false; + // + // ButtonCreateGasolineTanker + // + ButtonCreateGasolineTanker.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + ButtonCreateGasolineTanker.Location = new Point(12, 433); + ButtonCreateGasolineTanker.Name = "ButtonCreateGasolineTanker"; + ButtonCreateGasolineTanker.Size = new Size(75, 23); + ButtonCreateGasolineTanker.TabIndex = 1; + ButtonCreateGasolineTanker.Text = "Создать"; + ButtonCreateGasolineTanker.UseVisualStyleBackColor = true; + ButtonCreateGasolineTanker.Click += buttonCreateGasolineTanker_Click; + // + // buttonRight + // + buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonRight.BackgroundImage = Properties.Resources.arrowRight; + buttonRight.BackgroundImageLayout = ImageLayout.Stretch; + buttonRight.Location = new Point(884, 421); + buttonRight.Name = "buttonRight"; + buttonRight.Size = new Size(35, 35); + buttonRight.TabIndex = 2; + buttonRight.UseVisualStyleBackColor = true; + buttonRight.Click += ButtonMove_Click; + // + // buttonDown + // + buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonDown.BackgroundImage = Properties.Resources.arrowDown; + buttonDown.BackgroundImageLayout = ImageLayout.Stretch; + buttonDown.Location = new Point(843, 421); + buttonDown.Name = "buttonDown"; + buttonDown.Size = new Size(35, 35); + buttonDown.TabIndex = 3; + buttonDown.UseVisualStyleBackColor = true; + buttonDown.Click += ButtonMove_Click; + // + // buttonUp + // + buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonUp.BackgroundImage = Properties.Resources.arrowUp; + buttonUp.BackgroundImageLayout = ImageLayout.Stretch; + buttonUp.Location = new Point(843, 380); + buttonUp.Name = "buttonUp"; + buttonUp.Size = new Size(35, 35); + buttonUp.TabIndex = 4; + buttonUp.UseVisualStyleBackColor = true; + buttonUp.Click += ButtonMove_Click; + // + // buttonLeft + // + buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonLeft.BackgroundImage = Properties.Resources.arrowLeft; + buttonLeft.BackgroundImageLayout = ImageLayout.Stretch; + buttonLeft.Location = new Point(802, 421); + buttonLeft.Name = "buttonLeft"; + buttonLeft.Size = new Size(35, 35); + buttonLeft.TabIndex = 5; + buttonLeft.UseVisualStyleBackColor = true; + buttonLeft.Click += ButtonMove_Click; + // + // FormGasolineTanker + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(945, 474); + Controls.Add(buttonLeft); + Controls.Add(buttonUp); + Controls.Add(buttonDown); + Controls.Add(buttonRight); + Controls.Add(ButtonCreateGasolineTanker); + Controls.Add(pictureBoxGasolineTanker); + Name = "FormGasolineTanker"; + Text = "Бензовоз"; + ((System.ComponentModel.ISupportInitialize)pictureBoxGasolineTanker).EndInit(); + ResumeLayout(false); + } + + #endregion + + private PictureBox pictureBoxGasolineTanker; + private Button ButtonCreateGasolineTanker; + private Button buttonRight; + private Button buttonDown; + private Button buttonUp; + private Button buttonLeft; + } +} \ No newline at end of file diff --git a/GasolineTanker/GasolineTanker/FormGasolineTanker.cs b/GasolineTanker/GasolineTanker/FormGasolineTanker.cs new file mode 100644 index 0000000..d491e82 --- /dev/null +++ b/GasolineTanker/GasolineTanker/FormGasolineTanker.cs @@ -0,0 +1,102 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Windows.Forms.VisualStyles; + +namespace GasolineTanker +{ + public partial class FormGasolineTanker : Form + { + private DrawningGasolineTanker? _drawningGasolineTanker; + + public FormGasolineTanker() + { + InitializeComponent(); + } + + /// + /// Метод прорисовки машины + /// + private void Draw() + { + if (_drawningGasolineTanker == null) + { + return; + } + + Bitmap bmp = new(pictureBoxGasolineTanker.Width, pictureBoxGasolineTanker.Height); + Graphics gr = Graphics.FromImage(bmp); + _drawningGasolineTanker.DrawTransport(gr); + pictureBoxGasolineTanker.Image = bmp; + } + + /// + /// Обработка нажатия кнопки "Создать" + /// + /// + /// + private void buttonCreateGasolineTanker_Click(object sender, EventArgs e) + { + Random random = new(); + _drawningGasolineTanker = new DrawningGasolineTanker(); + _drawningGasolineTanker.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))); + if (!_drawningGasolineTanker.SetPictureSize(pictureBoxGasolineTanker.Width, pictureBoxGasolineTanker.Height)) + { + MessageBox.Show("Размер транспорта для отрисовки больше, чем форма! ", "Ошибка", + MessageBoxButtons.OK, + MessageBoxIcon.Error); + } + else + { + _drawningGasolineTanker.SetPosition(random.Next(10, 100), random.Next(10, 100)); + Draw(); + } + } + + /// + /// Перемещение объекта по форме (нажатие кнопок навигации) + /// + /// + /// + private void ButtonMove_Click(object sender, EventArgs e) + { + if (_drawningGasolineTanker == null) + { + return; + } + + string name = ((Button)sender)?.Name ?? string.Empty; + bool result = false; + switch (name) + { + case "buttonUp": + result = _drawningGasolineTanker.MoveTransport(DirectionType.Up); + break; + case "buttonDown": + result = _drawningGasolineTanker.MoveTransport(DirectionType.Down); + break; + case "buttonLeft": + result = _drawningGasolineTanker.MoveTransport(DirectionType.Left); + break; + case "buttonRight": + result = _drawningGasolineTanker.MoveTransport(DirectionType.Right); + break; + } + + if (result) + { + Draw(); + } + } + + } +} diff --git a/GasolineTanker/GasolineTanker/Form1.resx b/GasolineTanker/GasolineTanker/FormGasolineTanker.resx similarity index 93% rename from GasolineTanker/GasolineTanker/Form1.resx rename to GasolineTanker/GasolineTanker/FormGasolineTanker.resx index 1af7de1..af32865 100644 --- a/GasolineTanker/GasolineTanker/Form1.resx +++ b/GasolineTanker/GasolineTanker/FormGasolineTanker.resx @@ -1,17 +1,17 @@  - diff --git a/GasolineTanker/GasolineTanker/GasolineTanker.csproj b/GasolineTanker/GasolineTanker/GasolineTanker.csproj index e1a0735..244387d 100644 --- a/GasolineTanker/GasolineTanker/GasolineTanker.csproj +++ b/GasolineTanker/GasolineTanker/GasolineTanker.csproj @@ -8,4 +8,19 @@ enable + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/GasolineTanker/GasolineTanker/Program.cs b/GasolineTanker/GasolineTanker/Program.cs index feb86c7..1b6a3e0 100644 --- a/GasolineTanker/GasolineTanker/Program.cs +++ b/GasolineTanker/GasolineTanker/Program.cs @@ -11,7 +11,7 @@ namespace GasolineTanker // 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 FormGasolineTanker()); } } } \ No newline at end of file diff --git a/GasolineTanker/GasolineTanker/Properties/Resources.Designer.cs b/GasolineTanker/GasolineTanker/Properties/Resources.Designer.cs new file mode 100644 index 0000000..9dce59e --- /dev/null +++ b/GasolineTanker/GasolineTanker/Properties/Resources.Designer.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace GasolineTanker.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("GasolineTanker.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 arrowDown { + get { + object obj = ResourceManager.GetObject("arrowDown", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap arrowLeft { + get { + object obj = ResourceManager.GetObject("arrowLeft", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap arrowRight { + get { + object obj = ResourceManager.GetObject("arrowRight", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap arrowUp { + get { + object obj = ResourceManager.GetObject("arrowUp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/GasolineTanker/GasolineTanker/Properties/Resources.resx b/GasolineTanker/GasolineTanker/Properties/Resources.resx new file mode 100644 index 0000000..293419e --- /dev/null +++ b/GasolineTanker/GasolineTanker/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\arrowDown.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrowLeft.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrowRight.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrowUp.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/GasolineTanker/GasolineTanker/Resources/arrowDown.jpg b/GasolineTanker/GasolineTanker/Resources/arrowDown.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0aa2e3d345ad94fa3981d187530c4d681562b019 GIT binary patch literal 3194 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 literal 0 HcmV?d00001 diff --git a/GasolineTanker/GasolineTanker/Resources/arrowLeft.jpg b/GasolineTanker/GasolineTanker/Resources/arrowLeft.jpg new file mode 100644 index 0000000000000000000000000000000000000000..29140376813f15f13d49908f26ffeb8ded407993 GIT binary patch literal 3195 zcmd6oX;@Qd7RTT0Aqjhefer)^B#0FSsc6x#Z`Ls&0m5R6Y=Wf>*02>w01-qff+D5L zBC<$8kxjM{ltn;s6oDck>@EcbNks@-?j+NBIx{{`>&$%Wx$pnOz31HbIlp_(doJ`0 zng9xpwhp!c27`ewB^Q83fE7T%;nF2Bq-3G6C=?Qj!eKCIECEL#;Bk1oteld9tem18 z9Ex6%shJlpW?jnuKIezRYemH+rPs@N z)it$sx9b}ko7&ntI`4ON_dIyoKQQ>?(6eFwFuWreb?^1u`v6C57vc{BCWxDU#X{*6dyiy>DZ=r8A zv`&8*vAv0KzB776rvwTlyk>!zP?_A1MC#+us^-lR-uq)$JlM1DKT zNo2D~qH;!}^@2ECK0hM%o7}3K<^bT0jY$j}R89`VLI<~gXrrDsQJAN>!Ta<=Ta#>3 z*Qq#-c4LQ6&w61R2Xp+ksBU-Uk{Fgd;tx<`s-kfB5BJcd$#k~Xg?0oAH>Kpi@$kMW zIvI;r#e2@&Qj%eqe)2qo=Xa6o72j4^sCO>R91&i`4;r9j-fP(q>9F6E?XhiWgLjyv z=MYFJVR8aq)8t$5EP=X3N#;YkumWYRuRtdU&EIJJzRGXS7SNLl$M5Kx%U^8`krz=T zPPO`1MNOt{r-&THI(PCfqc3a7mgLRVKRiA}P(4xMr?|yC%WaEph7K(y?{nd+lsIZ+ zJ41LVwazmwlr^};cy!!b;fU>B$@#_c0K*2xaM{WQq@42L<))?bsIu9JdbRJ0ql^V! zW8RKWADP|k%(DyEsWDbMpqzQoWr~X~Dh_r8jN&2>uP2!Il!kA`wrOpxSL8*(kJIuO z-D6@QkhJeD1k|sI)oP{#H&iGT&g7wQA<%UUu}TwA1qLg3A#l1vGzl9vOd8bER%b9|p z^EvZxzjolCmDE5c;HV{!x~=yCPexP2cqw6{WIsjRJ4QCMGXKj!D(cZ)vV%n2)v^be3P5xMeTJW9(fV5g-n zR3Ex+H)>4vy~E{Sb~4|Wy(Exy+=a-*rPSP*-4m*84mxI^J9E2Fko6{hjf1L#%Bu$_ zkTCBjma19R%w?sslum-a{xA{n^*u7VIBMZ7wG1cre7$u_G|kn9 z>YjVZ-qqhFlMS}bUTwF27CM@V&~ghMkA4*swIC@g1c+u@JdtOohl|=+JkRR6_cK9a zwawowkP3_}u0LBVD~oBbsQ_E=Hqni(TKk%F@3X&Jt$i*qJY$BCtDH7WPQ&l(eXNkT z=5TDNf+yJ^nCv()t#BnCA*AKndGMAGM_{v`Skqcs( z<41Sp`c7f)9XCiCa1Ao7Tqj`<<2ziw-W$Dj-qn>bX0eUD$NlzK_W6tAgxz$^&u`0v zcJt-RqDq3pBhv}>Q*<+945AYxPyb3=n^=@a}tuIsc=)GlG`kL--k{R^w?tU$i@3gFETZ{hF z(mpeb;@&Tts~Qm}L%0@5B~_-qKUpM1rkoB>0TB4hH>(HhY`e8k{Fz0qxV_h^KObu_l|B+GmZ_hF z0DsG9jNJtJWIB4?l9@9faO|9lM|F=@l-hIabJml&f-gup)r@6$ngV9Zz}d}e8UjF+ zJjpp{atI$;?$FR@vSH+l8qDhcB%?tyL55I)l{PAq>3~#zEcw~%eymsj&5t=9H_%!w z&y}=lD0*~ebv`$=RFvc6(jRm9_*bV_d(Jo8Ha8eqG}(>fcO1Tx!e8^|D2n&TbwfZA z0)ea)J}WWCric?X{#wJmZ@$(f^X0fp_|_7GZ>qeD-Pl&D^c8>8tv@~5Aoa!1{N~W0 HK*N6rKICoR literal 0 HcmV?d00001 diff --git a/GasolineTanker/GasolineTanker/Resources/arrowRight.jpg b/GasolineTanker/GasolineTanker/Resources/arrowRight.jpg new file mode 100644 index 0000000000000000000000000000000000000000..febaffead8a421f2951e1d93ceff144573e77c0e GIT binary patch literal 3604 zcmd6pcUY529>*umKnOx0ltlqCk&a4LibO<;qEZwP5RfLIqQbfeiX?y{3nIk@6$?dK zAp)UG z7#auCJ8gH^0vHSi4vH#(Sil+};PB-pDo9a7iJ?$PBnpE@uMopxuviIw)pb7vCC5m=A;LimH7sa>&EhdhU5E-ha0UU-vz>$dMs73CxqH%!4p=8wb ztyai7`=Qr{;|=06^2G?-Dq7@Ro^pwX{t@xw7LuOPiJ2 zSN~(I;rAKirM96Q?+yF={jVAQWL!x75}#6Z0>1 zxj8=!*&0^5>R8}*N1Y^oG0BgQ;JlaOJ98s1PtY)vHH*wR>NX8}V-4|Mnf;o0n4256 z4y-dO0NANFKgfLjDOq$Y&4D#r>1e^Wcq3^KOEw2J({D zR8b5ms{X?H_3If^`?$TY*;UW|cIw+{dx~Q+mf9x+(xNh)^r9s3FoCMDk4=6+x-bzLjjGSOL_%A|dL!iwqMiv4E zZR4tZt?4G-j4F397YTv4uKTGkV+$K7t!U?a-Xy4qxP? zS=O8L#$IQRm^z5Zhk2(M!jD2Y^y4bT(N;KXVx`g+!kfW**%}} zqBLT&Yl+34S4XFh$J<(T+}CBPUCj!{nshEDqf+B_a|@`f#PGCIvfkjQ+G!F5P$oN|63A)l-oQmq~89j-@5R@jcLl_^bh+ndnhVwTMOk{wd7YW_-|+#v2F&W>#2UXC(%ezxvYV%hp#V!^C)b&0!auXb*vc7?8_=)m1f9LGp;5Ln$nSh9{W z@8<`P_u9?Wdk?*PmFOfh@xuw&ndl#7D{Z>FA0g#}bW2LeIgj59SMX2F9-sa=E7K-A z_)YSs3(NI;u+5E)(^xB!9rw_rxx0JK`5^7bC4f|Drt|v!@SFK@?voi;r175D&**ckjLU%33+^_Kl5gwtaJ{0Pk!A$a-{9zx?$tb#I3a@Me7D z^$fkQYJkqVKPRyLA+WBdp*pJ|TiiK;m^5kS<_6+dT7jWy)oD}FURhM~dZ{67DNFT^ z;{{QSkbs)XS$KDGXz77>gaA9bMD)$bgK!tS=L$XQn_07+Y4u+-DWqbI&I?r@@%Tld zM%2CWV})TH%`y$H&lO#hTe1T*ciG)C3n}4nee*lMfIy%&HWE2JVF;1S* zL+`5UKgqJ!HJaKiGs^sdxh`38tqmrlKojP=@0Ul(jJqi7NZF&JemVbsua|SLlYwTz zXT45dterQ8Ks-6BZ$593Ui!6jZ5@~0I-l)GpL&^>{dW6fl~wkv>_h&0d$j{xG9!9b zvzt|RERlpyARtW&rQsb4cnUU~*g+q1AmCh=ZXN8mIuj|gTMYtnChd|0u`#Mif7+Pi zh}ZlE9(hUgt-k2)BLxd?Pq3~Ns|RCtpUS2C_@$I@*L4%?!7bG-CUKrK4A3-to&)zt zOD?>DpqgkQk=ODf?BW4;}q*Cr(@!v)*YNf`F{&pw#EmhB^crYxCix11YlUQa63wt|`5HlV!>$Hc1&{(m} zFO~RC1Px<>ig2(Ywx>yvG`)vOnoIT+o;c+McecR;XU~TU-0!P7VG%4F?z^<2Ba6Mv z_XJ1AjL+){Z>o2VEv3rO_3HQu{H^#VKe8VLcESzB6e_%!T@d9Wun6 z*bKE{|IL_~sjJ+sCu0F__xp4OoaPp6b`5*r+s^-feaM_#J0s;TX3JBbB8TvWS_bCKsydj|eU^YS6J`(@| z`$F0qI0Z9Djw4sGFExeqDSGk9EoRD{1v5tB-jlmmr6`*o(3d&z1fO)}Xaw#?)lu!_ z-t(4?ONy~A5A_7a4bDO2qS3=Dt9VCNsyEEy)A39G=)jF03f`5EJ(L|NkK`G?dNrE_ zWjr-5snxftudUI%a0Y-xW7*o1?D;{Z-QZ{rG7jxP~~?XgHf zCjENxN$c>kD4KKP=4vVFN$vPUPE=1tIa@VKcj0`{)tmXx=GEExS>bG>Jm;+_{GV%e zaAzOtIp3bQiPI+@TFGiDni`c9UJ29dH)zf5J2p!&b@j&^V$;PtPe|?LHw&^!;~75c zL&n1&X{iZ9T%%IwENS8zy)Jozv+ttTA$B;j@ZiM?n*|5^W_xtj2U9^r0Y&TW;_mE( u!jaINup3H|H-q3_ULK?E6*frwd>11dpiQN~<0vb%U;Xxm`rUg98u=URfMqBE literal 0 HcmV?d00001 diff --git a/GasolineTanker/GasolineTanker/Resources/arrowUp.jpg b/GasolineTanker/GasolineTanker/Resources/arrowUp.jpg new file mode 100644 index 0000000000000000000000000000000000000000..be0505f25a13a06391d26e031ea254fab6562010 GIT binary patch literal 3525 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 Rr3)iA*z)AQI4T7V{uA6;P)z^; literal 0 HcmV?d00001