From de6a24973917200e1d62bb8d0c0cc34f81c2da99 Mon Sep 17 00:00:00 2001 From: Kirill <117719052+KirillFirsof@users.noreply.github.com> Date: Wed, 6 Dec 2023 21:31:30 +0400 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B1=D1=8B=D0=BB=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=B8=D1=82=D0=B8=D1=82=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DrawningBulldoser.cs | 5 + .../RPP_FirstLaba_Tractor/DrawningTractor.cs | 48 ++++-- .../RPP_FirstLaba_Tractor/EntityBulldoser.cs | 2 +- .../RPP_FirstLaba_Tractor/EntityTractor.cs | 3 +- .../FormTractorCollection.cs | 14 +- .../FormTractorConfig.Designer.cs | 145 ++++++++++-------- .../FormTractorConfig.cs | 129 ++++++++++------ 7 files changed, 205 insertions(+), 141 deletions(-) diff --git a/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/DrawningBulldoser.cs b/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/DrawningBulldoser.cs index ca3eb8a..42d7618 100644 --- a/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/DrawningBulldoser.cs +++ b/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/DrawningBulldoser.cs @@ -95,5 +95,10 @@ namespace ProjectTractor.DrawningObjects } } + public void ChangeAdditionalColor(Color color) + { + ((EntityBulldoser)EntityTractor).AdditionalColor = color; + } + } } diff --git a/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/DrawningTractor.cs b/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/DrawningTractor.cs index 99015c2..39e7239 100644 --- a/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/DrawningTractor.cs +++ b/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/DrawningTractor.cs @@ -6,13 +6,11 @@ using System.Threading.Tasks; using ProjectTractor.Entities; using ProjectTractor.MovementStrategy; -namespace ProjectTractor.DrawningObjects { - -/// -/// Класс, отвечающий за прорисовку и перемещение объекта-сущности -/// - public class DrawningTractor -{ +namespace ProjectTractor.DrawningObjects { + /// + /// Класс, отвечающий за прорисовку и перемещение объекта-сущности + /// + public class DrawningTractor { /// /// Класс-сущность /// @@ -41,15 +39,16 @@ namespace ProjectTractor.DrawningObjects { /// Высота прорисовки автомобиля /// protected readonly int _tractorHeight = 60; - /// - /// Конструктор - /// - /// Скорость - /// Вес - /// Основной цвет - /// Ширина картинки - /// Высота картинки - public DrawningTractor(int speed, double weight, Color bodyColor, int + + /// + /// Конструктор + /// + /// Скорость + /// Вес + /// Основной цвет + /// Ширина картинки + /// Высота картинки + public DrawningTractor(int speed, double weight, Color bodyColor, int width, int height) { if (width <= _tractorWidth || height <= _tractorHeight) @@ -228,7 +227,22 @@ namespace ProjectTractor.DrawningObjects { g.DrawRectangle(pen, _startPosX + 60, _startPosY, 10, 20); g.DrawRectangle(pen, _startPosX, _startPosY, 40, 20); } -} + + public void ChangeColor(Color color) + { + if (EntityTractor == null) + { + return; + } + EntityTractor.BodyColor = color; + } + + public void ChangePictureBoxSize(int pictureBoxWidth, int pictureBoxHeight) + { + _pictureWidth = pictureBoxWidth; + _pictureHeight = pictureBoxHeight; + } + } } diff --git a/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/EntityBulldoser.cs b/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/EntityBulldoser.cs index b71fcd3..c0e5211 100644 --- a/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/EntityBulldoser.cs +++ b/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/EntityBulldoser.cs @@ -14,7 +14,7 @@ namespace ProjectTractor.Entities /// /// Дополнительный цвет (для опциональных элементов) /// - public Color AdditionalColor { get; private set; } + public Color AdditionalColor { get; set; } /// /// Признак (опция) наличия обвеса /// diff --git a/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/EntityTractor.cs b/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/EntityTractor.cs index 17d046f..0de2fbe 100644 --- a/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/EntityTractor.cs +++ b/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/EntityTractor.cs @@ -22,7 +22,7 @@ namespace ProjectTractor.Entities /// /// Основной цвет /// - public Color BodyColor { get; private set; } + public Color BodyColor { get; set; } /// /// Шаг перемещения автомобиля /// @@ -39,6 +39,5 @@ namespace ProjectTractor.Entities Weight = weight; BodyColor = bodyColor; } - } } diff --git a/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/FormTractorCollection.cs b/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/FormTractorCollection.cs index cd9a7e9..58ac92d 100644 --- a/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/FormTractorCollection.cs +++ b/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/FormTractorCollection.cs @@ -113,19 +113,24 @@ namespace ProjectTractor { return; } - FormTractor form = new(); - if (form.ShowDialog() == DialogResult.OK) + + FormTractorConfig form = new(); + form.Show(); + Action? tractorDelegate = new((m) => { - if (obj + form.SelectedTractor) + bool isAdditionSuccessful = (obj + m); + if (isAdditionSuccessful) { MessageBox.Show("Объект добавлен"); + m.ChangePictureBoxSize(pictureBoxCollection.Width, pictureBoxCollection.Height); pictureBoxCollection.Image = obj.ShowTractors(); } else { MessageBox.Show("Не удалось добавить объект"); } - } + }); + form.AddEvent(tractorDelegate); } /// @@ -180,7 +185,6 @@ namespace ProjectTractor } pictureBoxCollection.Image = obj.ShowTractors(); } - private void InitializeComponent() { this.pictureBoxCollection = new System.Windows.Forms.PictureBox(); diff --git a/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/FormTractorConfig.Designer.cs b/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/FormTractorConfig.Designer.cs index 786aa34..31df060 100644 --- a/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/FormTractorConfig.Designer.cs +++ b/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/FormTractorConfig.Designer.cs @@ -30,7 +30,7 @@ { this.groupBoxConfig = new System.Windows.Forms.GroupBox(); this.labelModifiedObject = new System.Windows.Forms.Label(); - this.labelSimleObject = new System.Windows.Forms.Label(); + this.labelSimpleObject = new System.Windows.Forms.Label(); this.groupBoxColors = new System.Windows.Forms.GroupBox(); this.panelPurpule = new System.Windows.Forms.Panel(); this.panelBlack = new System.Windows.Forms.Panel(); @@ -46,11 +46,11 @@ this.label1 = new System.Windows.Forms.Label(); this.numericUpDownWeight = new System.Windows.Forms.NumericUpDown(); this.numericUpDownSpeed = new System.Windows.Forms.NumericUpDown(); - this.buttonAddCar = new System.Windows.Forms.Button(); - this.button6 = new System.Windows.Forms.Button(); + this.buttonOk = new System.Windows.Forms.Button(); + this.buttonCancel = new System.Windows.Forms.Button(); this.pictureBoxObject = new System.Windows.Forms.PictureBox(); - this.label5 = new System.Windows.Forms.Label(); - this.label6 = new System.Windows.Forms.Label(); + this.labelColor = new System.Windows.Forms.Label(); + this.labelAdditionalColor = new System.Windows.Forms.Label(); this.panelObject = new System.Windows.Forms.Panel(); this.groupBoxConfig.SuspendLayout(); this.groupBoxColors.SuspendLayout(); @@ -63,7 +63,7 @@ // groupBoxConfig // this.groupBoxConfig.Controls.Add(this.labelModifiedObject); - this.groupBoxConfig.Controls.Add(this.labelSimleObject); + this.groupBoxConfig.Controls.Add(this.labelSimpleObject); this.groupBoxConfig.Controls.Add(this.groupBoxColors); this.groupBoxConfig.Controls.Add(this.checkBoxBlade); this.groupBoxConfig.Controls.Add(this.checkBoxWheelsOrnament); @@ -73,7 +73,7 @@ this.groupBoxConfig.Controls.Add(this.numericUpDownSpeed); this.groupBoxConfig.Location = new System.Drawing.Point(12, 0); this.groupBoxConfig.Name = "groupBoxConfig"; - this.groupBoxConfig.Size = new System.Drawing.Size(585, 341); + this.groupBoxConfig.Size = new System.Drawing.Size(585, 256); this.groupBoxConfig.TabIndex = 0; this.groupBoxConfig.TabStop = false; this.groupBoxConfig.Text = "Параметры"; @@ -82,7 +82,6 @@ // this.labelModifiedObject.BackColor = System.Drawing.SystemColors.ButtonHighlight; this.labelModifiedObject.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.labelModifiedObject.Enabled = false; this.labelModifiedObject.Location = new System.Drawing.Point(449, 171); this.labelModifiedObject.Name = "labelModifiedObject"; this.labelModifiedObject.Size = new System.Drawing.Size(114, 42); @@ -91,17 +90,17 @@ this.labelModifiedObject.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.labelModifiedObject.MouseDown += new System.Windows.Forms.MouseEventHandler(this.LabelObject_MouseDown); // - // labelSimleObject + // labelSimpleObject // - this.labelSimleObject.BackColor = System.Drawing.SystemColors.ButtonHighlight; - this.labelSimleObject.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.labelSimleObject.Location = new System.Drawing.Point(369, 171); - this.labelSimleObject.Name = "labelSimleObject"; - this.labelSimleObject.Size = new System.Drawing.Size(74, 42); - this.labelSimleObject.TabIndex = 7; - this.labelSimleObject.Text = "Простой"; - this.labelSimleObject.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.labelSimleObject.MouseDown += new System.Windows.Forms.MouseEventHandler(this.LabelObject_MouseDown); + this.labelSimpleObject.BackColor = System.Drawing.SystemColors.ButtonHighlight; + this.labelSimpleObject.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelSimpleObject.Location = new System.Drawing.Point(369, 171); + this.labelSimpleObject.Name = "labelSimpleObject"; + this.labelSimpleObject.Size = new System.Drawing.Size(74, 42); + this.labelSimpleObject.TabIndex = 7; + this.labelSimpleObject.Text = "Простой"; + this.labelSimpleObject.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.labelSimpleObject.MouseDown += new System.Windows.Forms.MouseEventHandler(this.LabelObject_MouseDown); // // groupBoxColors // @@ -128,6 +127,7 @@ this.panelPurpule.Name = "panelPurpule"; this.panelPurpule.Size = new System.Drawing.Size(40, 40); this.panelPurpule.TabIndex = 1; + this.panelPurpule.DragDrop += new System.Windows.Forms.DragEventHandler(this.panelObject_DragDrop); this.panelPurpule.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panelColor_MouseDown); // // panelBlack @@ -138,6 +138,7 @@ this.panelBlack.Name = "panelBlack"; this.panelBlack.Size = new System.Drawing.Size(40, 40); this.panelBlack.TabIndex = 1; + this.panelBlack.DragDrop += new System.Windows.Forms.DragEventHandler(this.panelObject_DragDrop); this.panelBlack.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panelColor_MouseDown); // // panelGrey @@ -148,6 +149,7 @@ this.panelGrey.Name = "panelGrey"; this.panelGrey.Size = new System.Drawing.Size(40, 40); this.panelGrey.TabIndex = 1; + this.panelGrey.DragDrop += new System.Windows.Forms.DragEventHandler(this.panelObject_DragDrop); this.panelGrey.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panelColor_MouseDown); // // panelYellow @@ -158,6 +160,7 @@ this.panelYellow.Name = "panelYellow"; this.panelYellow.Size = new System.Drawing.Size(40, 40); this.panelYellow.TabIndex = 1; + this.panelYellow.DragDrop += new System.Windows.Forms.DragEventHandler(this.panelObject_DragDrop); this.panelYellow.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panelColor_MouseDown); // // panelBlue @@ -168,6 +171,7 @@ this.panelBlue.Name = "panelBlue"; this.panelBlue.Size = new System.Drawing.Size(40, 40); this.panelBlue.TabIndex = 1; + this.panelBlue.DragDrop += new System.Windows.Forms.DragEventHandler(this.panelObject_DragDrop); this.panelBlue.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panelColor_MouseDown); // // panelWhite @@ -178,6 +182,7 @@ this.panelWhite.Name = "panelWhite"; this.panelWhite.Size = new System.Drawing.Size(40, 40); this.panelWhite.TabIndex = 1; + this.panelWhite.DragDrop += new System.Windows.Forms.DragEventHandler(this.panelObject_DragDrop); this.panelWhite.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panelColor_MouseDown); // // panelGreen @@ -188,6 +193,7 @@ this.panelGreen.Name = "panelGreen"; this.panelGreen.Size = new System.Drawing.Size(40, 40); this.panelGreen.TabIndex = 0; + this.panelGreen.DragDrop += new System.Windows.Forms.DragEventHandler(this.panelObject_DragDrop); this.panelGreen.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panelColor_MouseDown); // // panelRed @@ -198,12 +204,13 @@ this.panelRed.Name = "panelRed"; this.panelRed.Size = new System.Drawing.Size(40, 40); this.panelRed.TabIndex = 0; + this.panelRed.DragDrop += new System.Windows.Forms.DragEventHandler(this.panelObject_DragDrop); this.panelRed.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panelColor_MouseDown); // // checkBoxBlade // this.checkBoxBlade.AutoSize = true; - this.checkBoxBlade.Location = new System.Drawing.Point(32, 227); + this.checkBoxBlade.Location = new System.Drawing.Point(32, 154); this.checkBoxBlade.Name = "checkBoxBlade"; this.checkBoxBlade.Size = new System.Drawing.Size(205, 24); this.checkBoxBlade.TabIndex = 5; @@ -213,7 +220,7 @@ // checkBoxWheelsOrnament // this.checkBoxWheelsOrnament.AutoSize = true; - this.checkBoxWheelsOrnament.Location = new System.Drawing.Point(32, 286); + this.checkBoxWheelsOrnament.Location = new System.Drawing.Point(32, 189); this.checkBoxWheelsOrnament.Name = "checkBoxWheelsOrnament"; this.checkBoxWheelsOrnament.Size = new System.Drawing.Size(305, 24); this.checkBoxWheelsOrnament.TabIndex = 4; @@ -282,67 +289,71 @@ 0, 0}); // - // buttonAddCar + // buttonOk // - this.buttonAddCar.Location = new System.Drawing.Point(631, 305); - this.buttonAddCar.Name = "buttonAddCar"; - this.buttonAddCar.Size = new System.Drawing.Size(94, 29); - this.buttonAddCar.TabIndex = 2; - this.buttonAddCar.Text = "Добавить"; - this.buttonAddCar.UseVisualStyleBackColor = true; - this.buttonAddCar.Click += new System.EventHandler(this.buttonAddCar_Click); + this.buttonOk.Location = new System.Drawing.Point(631, 227); + this.buttonOk.Name = "buttonOk"; + this.buttonOk.Size = new System.Drawing.Size(94, 29); + this.buttonOk.TabIndex = 2; + this.buttonOk.Text = "Добавить"; + this.buttonOk.UseVisualStyleBackColor = true; + this.buttonOk.Click += new System.EventHandler(this.ButtonOk_Click); // - // button6 + // buttonCancel // - this.button6.Location = new System.Drawing.Point(744, 305); - this.button6.Name = "button6"; - this.button6.Size = new System.Drawing.Size(94, 29); - this.button6.TabIndex = 3; - this.button6.Text = "Отмена"; - this.button6.UseVisualStyleBackColor = true; + this.buttonCancel.Location = new System.Drawing.Point(746, 227); + this.buttonCancel.Name = "buttonCancel"; + this.buttonCancel.Size = new System.Drawing.Size(94, 29); + this.buttonCancel.TabIndex = 3; + this.buttonCancel.Text = "Отмена"; + this.buttonCancel.UseVisualStyleBackColor = true; // // pictureBoxObject // this.pictureBoxObject.Location = new System.Drawing.Point(3, 50); this.pictureBoxObject.Name = "pictureBoxObject"; - this.pictureBoxObject.Size = new System.Drawing.Size(259, 232); + this.pictureBoxObject.Size = new System.Drawing.Size(259, 150); this.pictureBoxObject.TabIndex = 2; this.pictureBoxObject.TabStop = false; // - // label5 + // labelColor // - this.label5.AllowDrop = true; - this.label5.BackColor = System.Drawing.SystemColors.ButtonHighlight; - this.label5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.label5.Location = new System.Drawing.Point(2, 15); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(119, 32); - this.label5.TabIndex = 3; - this.label5.Text = "Цвет"; - this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.labelColor.AllowDrop = true; + this.labelColor.BackColor = System.Drawing.SystemColors.ButtonHighlight; + this.labelColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelColor.Location = new System.Drawing.Point(2, 15); + this.labelColor.Name = "labelColor"; + this.labelColor.Size = new System.Drawing.Size(119, 32); + this.labelColor.TabIndex = 3; + this.labelColor.Text = "Цвет"; + this.labelColor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.labelColor.DragDrop += new System.Windows.Forms.DragEventHandler(this.labelColor_DragDrop); + this.labelColor.DragEnter += new System.Windows.Forms.DragEventHandler(this.labelColor_DragEnter); // - // label6 + // labelAdditionalColor // - this.label6.AllowDrop = true; - this.label6.BackColor = System.Drawing.SystemColors.ButtonHighlight; - this.label6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.label6.Location = new System.Drawing.Point(142, 15); - this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(120, 32); - this.label6.TabIndex = 4; - this.label6.Text = "Доп. цвет"; - this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.labelAdditionalColor.AllowDrop = true; + this.labelAdditionalColor.BackColor = System.Drawing.SystemColors.ButtonHighlight; + this.labelAdditionalColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelAdditionalColor.Location = new System.Drawing.Point(142, 15); + this.labelAdditionalColor.Name = "labelAdditionalColor"; + this.labelAdditionalColor.Size = new System.Drawing.Size(120, 32); + this.labelAdditionalColor.TabIndex = 4; + this.labelAdditionalColor.Text = "Доп. цвет"; + this.labelAdditionalColor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.labelAdditionalColor.DragDrop += new System.Windows.Forms.DragEventHandler(this.LabelAdditionalColor_DragDrop); + this.labelAdditionalColor.DragEnter += new System.Windows.Forms.DragEventHandler(this.labelColor_DragEnter); // // panelObject // this.panelObject.AllowDrop = true; this.panelObject.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.panelObject.Controls.Add(this.label6); - this.panelObject.Controls.Add(this.label5); + this.panelObject.Controls.Add(this.labelAdditionalColor); + this.panelObject.Controls.Add(this.labelColor); this.panelObject.Controls.Add(this.pictureBoxObject); this.panelObject.Location = new System.Drawing.Point(603, 12); this.panelObject.Name = "panelObject"; - this.panelObject.Size = new System.Drawing.Size(267, 287); + this.panelObject.Size = new System.Drawing.Size(267, 208); this.panelObject.TabIndex = 4; this.panelObject.DragDrop += new System.Windows.Forms.DragEventHandler(this.panelObject_DragDrop); this.panelObject.DragEnter += new System.Windows.Forms.DragEventHandler(this.panelObject_DragEnter); @@ -351,10 +362,10 @@ // this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(882, 353); + this.ClientSize = new System.Drawing.Size(882, 271); this.Controls.Add(this.panelObject); - this.Controls.Add(this.button6); - this.Controls.Add(this.buttonAddCar); + this.Controls.Add(this.buttonCancel); + this.Controls.Add(this.buttonOk); this.Controls.Add(this.groupBoxConfig); this.Name = "FormTractorConfig"; this.Text = "FormTractorConfig"; @@ -388,12 +399,12 @@ private Panel panelBlue; private Panel panelWhite; private Label labelModifiedObject; - private Label labelSimleObject; - private Button buttonAddCar; - private Button button6; + private Label labelSimpleObject; + private Button buttonOk; + private Button buttonCancel; private PictureBox pictureBoxObject; - private Label label5; - private Label label6; + private Label labelColor; + private Label labelAdditionalColor; private Panel panelObject; } } \ No newline at end of file diff --git a/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/FormTractorConfig.cs b/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/FormTractorConfig.cs index 4c11d33..a4f5ff3 100644 --- a/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/FormTractorConfig.cs +++ b/RPP_FirstLaba_Tractor/RPP_FirstLaba_Tractor/FormTractorConfig.cs @@ -8,6 +8,7 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using ProjectTractor.DrawningObjects; +using ProjectTractor.Entities; namespace ProjectTractor; @@ -17,19 +18,13 @@ namespace ProjectTractor; public partial class FormTractorConfig : Form { /// - /// Переменная-выбранная машина + /// Переменная-выбранный трактор /// DrawningTractor? _tractor = null; /// - /// Делегат для передачи объекта-автомобиля - /// - /// - public delegate void TractorDelegate(DrawningTractor tractor); - /// /// Событие /// - private event TractorDelegate? EventAddTractor; - + private event Action? EventAddTractor; /// /// Конструктор /// @@ -45,14 +40,28 @@ public partial class FormTractorConfig : Form panelWhite.MouseDown += panelColor_MouseDown; panelYellow.MouseDown += panelColor_MouseDown; panelBlue.MouseDown += panelColor_MouseDown; + labelSimpleObject.MouseDown += LabelObject_MouseDown; + labelModifiedObject.MouseDown += LabelObject_MouseDown; - // TODO buttonCancel.Click with lambda + buttonCancel.Click += (s, e) => Close(); + } + + /// + /// Отрисовать трактор + /// + private void DrawTractor() + { + Bitmap bmp = new(pictureBoxObject.Width, pictureBoxObject.Height); + Graphics gr = Graphics.FromImage(bmp); + _tractor?.SetPosition(5, 5); + _tractor?.DrawTransport(gr); + pictureBoxObject.Image = bmp; } /// /// Добавление события /// /// Привязанный метод - public void AddEvent(TractorDelegate ev) + public void AddEvent(Action ev) { if (EventAddTractor == null) { @@ -64,38 +73,19 @@ public partial class FormTractorConfig : Form } } /// - /// Добавление машины - /// - /// - /// - private void ButtonOk_Click(object sender, EventArgs e) - { - EventAddTractor?.Invoke(_tractor); - Close(); - } - - /// - /// Отрисовать машину - /// - private void DrawTractor() - { - Bitmap bmp = new(pictureBoxObject.Width, pictureBoxObject.Height); - Graphics gr = Graphics.FromImage(bmp); - _tractor?.SetPosition(5, 5); - _tractor?.DrawTransport(gr); - pictureBoxObject.Image = bmp; - } - /// /// Передаем информацию при нажатии на Label /// /// /// private void LabelObject_MouseDown(object sender, MouseEventArgs e) { - (sender as Label)?.DoDragDrop((sender as Label)?.Name, - DragDropEffects.Move | DragDropEffects.Copy); + (sender as Label)?.DoDragDrop((sender as Label)?.Name, DragDropEffects.Move | DragDropEffects.Copy); } - + /// + /// Проверка получаемой информации (ее типа на соответствие требуемому) + /// + /// + /// private void panelObject_DragEnter(object sender, DragEventArgs e) { if (e.Data?.GetDataPresent(DataFormats.Text) ?? false) @@ -107,7 +97,11 @@ public partial class FormTractorConfig : Form e.Effect = DragDropEffects.None; } } - + /// + /// Действия при приеме перетаскиваемой информации + /// + /// + /// private void panelObject_DragDrop(object sender, DragEventArgs e) { switch (e.Data?.GetData(DataFormats.Text).ToString()) @@ -119,31 +113,68 @@ public partial class FormTractorConfig : Form break; case "labelModifiedObject": _tractor = new DrawningBulldoser((int)numericUpDownSpeed.Value, - (int)numericUpDownWeight.Value, Color.White, Color.Black, checkBoxBlade.Checked, - checkBoxWheelsOrnament.Checked, pictureBoxObject.Width, + (int)numericUpDownWeight.Value, Color.White, Color.Black, checkBoxWheelsOrnament.Checked, + checkBoxBlade.Checked, pictureBoxObject.Width, pictureBoxObject.Height); break; } + labelColor.BackColor = Color.Empty; + labelAdditionalColor.BackColor = Color.Empty; + DrawTractor(); + } + /// + /// Смена цвета + /// + private void panelColor_MouseDown(object sender, MouseEventArgs e) + { + (sender as Panel)?.DoDragDrop((sender as Panel)?.BackColor, DragDropEffects.Move | DragDropEffects.Copy); + } + + private void labelColor_DragDrop(object sender, DragEventArgs e) + { + if (_tractor == null) + { + return; + } + labelColor.BackColor = (Color)e.Data.GetData(typeof(Color)); + _tractor.ChangeColor(labelColor.BackColor); DrawTractor(); } - private void panelColor_MouseDown(object sender, MouseEventArgs e) + private void labelColor_DragEnter(object sender, DragEventArgs e) { - + if (e.Data.GetDataPresent(typeof(Color))) + { + e.Effect = DragDropEffects.Copy; + } + else + { + e.Effect = DragDropEffects.None; + } } + + private void LabelAdditionalColor_DragDrop(object sender, DragEventArgs e) + { + if ((_tractor == null) || (_tractor is DrawningBulldoser == false)) + { + return; + } + labelAdditionalColor.BackColor = (Color)e.Data.GetData(typeof(Color)); + ((DrawningBulldoser)_tractor).ChangeAdditionalColor(labelAdditionalColor.BackColor); + DrawTractor(); + } + + /// - /// Добавление объекта + /// Добавление трактора /// /// /// - private void buttonAddCar_Click(object sender, EventArgs e) + private void ButtonOk_Click(object sender, EventArgs e) { - var formTractorConfig = new FormTractorConfig(); - // TODO Call method AddEvent from formCarConfig - formTractorConfig.Show(); - + if (_tractor == null) + return; + EventAddTractor?.Invoke(_tractor); + Close(); } - - - // TODO Реализовать логику смены цветов: основного и дополнительного (для продвинутого объекта) }