Выполнена

This commit is contained in:
2024-04-10 23:04:14 +04:00
parent 456bbc76a9
commit 35ffb3bc7f
5 changed files with 77 additions and 12 deletions

View File

@@ -25,6 +25,8 @@ public class EntityBoat
/// </summary> /// </summary>
public double Step => Speed * 100 / Weight; public double Step => Speed * 100 / Weight;
//public string SetBodyColor => BodyColor.ToString();
/// <summary> /// <summary>
/// Конструктор сущности /// Конструктор сущности
/// </summary> /// </summary>
@@ -37,4 +39,9 @@ public class EntityBoat
Weight = weight; Weight = weight;
BodyColor = bodyColor; BodyColor = bodyColor;
} }
public void SetBodyColor(Color name)
{
BodyColor = name;
}
} }

View File

@@ -43,4 +43,9 @@ public class EntityMotorBoat : EntityBoat
Oar = oar; Oar = oar;
ProtectiveGlass = protectiveGlass; ProtectiveGlass = protectiveGlass;
} }
public void SetAdditionalColor(Color name)
{
AdditionalColor = name;
}
} }

View File

@@ -45,14 +45,15 @@ public partial class FormBoatCollection : Form
private void ButtonAddBoat_Click(object sender, EventArgs e) private void ButtonAddBoat_Click(object sender, EventArgs e)
{ {
FormBoatConfig form = new(); FormBoatConfig form = new();
// TODO передать метод
form.Show(); form.Show();
// передать метод ✔
form.AddEvent(SetBoat);
} }
/// <summary> /// <summary>
/// Добавление лодки в коллекцию /// Добавление лодки в коллекцию
/// </summary> /// </summary>
/// <param name="car"></param> /// <param name="boat"></param>
private void SetBoat(DrawingBoat boat) private void SetBoat(DrawingBoat boat)
{ {
if (_company == null || boat == null) if (_company == null || boat == null)
@@ -60,7 +61,7 @@ public partial class FormBoatCollection : Form
return; return;
} }
if (_company + boat > 0) if (_company + boat >= 0)
{ {
MessageBox.Show("Объект добавлен"); MessageBox.Show("Объект добавлен");
pictureBox.Image = _company.Show(); pictureBox.Image = _company.Show();

View File

@@ -105,6 +105,7 @@
panelBlack.Name = "panelBlack"; panelBlack.Name = "panelBlack";
panelBlack.Size = new Size(28, 28); panelBlack.Size = new Size(28, 28);
panelBlack.TabIndex = 3; panelBlack.TabIndex = 3;
panelBlack.MouseDown += Panel_MouseDown;
// //
// panelWhite // panelWhite
// //
@@ -113,6 +114,7 @@
panelWhite.Name = "panelWhite"; panelWhite.Name = "panelWhite";
panelWhite.Size = new Size(28, 28); panelWhite.Size = new Size(28, 28);
panelWhite.TabIndex = 4; panelWhite.TabIndex = 4;
panelWhite.MouseDown += Panel_MouseDown;
// //
// panelPink // panelPink
// //
@@ -121,6 +123,7 @@
panelPink.Name = "panelPink"; panelPink.Name = "panelPink";
panelPink.Size = new Size(28, 28); panelPink.Size = new Size(28, 28);
panelPink.TabIndex = 1; panelPink.TabIndex = 1;
panelPink.MouseDown += Panel_MouseDown;
// //
// panelRed // panelRed
// //
@@ -129,6 +132,7 @@
panelRed.Name = "panelRed"; panelRed.Name = "panelRed";
panelRed.Size = new Size(28, 28); panelRed.Size = new Size(28, 28);
panelRed.TabIndex = 5; panelRed.TabIndex = 5;
panelRed.MouseDown += Panel_MouseDown;
// //
// panelYellow // panelYellow
// //
@@ -137,6 +141,7 @@
panelYellow.Name = "panelYellow"; panelYellow.Name = "panelYellow";
panelYellow.Size = new Size(28, 28); panelYellow.Size = new Size(28, 28);
panelYellow.TabIndex = 1; panelYellow.TabIndex = 1;
panelYellow.MouseDown += Panel_MouseDown;
// //
// panelBlue // panelBlue
// //
@@ -145,6 +150,7 @@
panelBlue.Name = "panelBlue"; panelBlue.Name = "panelBlue";
panelBlue.Size = new Size(28, 28); panelBlue.Size = new Size(28, 28);
panelBlue.TabIndex = 2; panelBlue.TabIndex = 2;
panelBlue.MouseDown += Panel_MouseDown;
// //
// panelGreen // panelGreen
// //
@@ -153,6 +159,7 @@
panelGreen.Name = "panelGreen"; panelGreen.Name = "panelGreen";
panelGreen.Size = new Size(28, 28); panelGreen.Size = new Size(28, 28);
panelGreen.TabIndex = 1; panelGreen.TabIndex = 1;
panelGreen.MouseDown += Panel_MouseDown;
// //
// panelOrange // panelOrange
// //
@@ -161,6 +168,7 @@
panelOrange.Name = "panelOrange"; panelOrange.Name = "panelOrange";
panelOrange.Size = new Size(28, 28); panelOrange.Size = new Size(28, 28);
panelOrange.TabIndex = 0; panelOrange.TabIndex = 0;
panelOrange.MouseDown += Panel_MouseDown;
// //
// checkBoxProtectiveGlass // checkBoxProtectiveGlass
// //
@@ -255,6 +263,7 @@
// //
// panelObject // panelObject
// //
panelObject.AllowDrop = true;
panelObject.Controls.Add(labelAdditionalColor); panelObject.Controls.Add(labelAdditionalColor);
panelObject.Controls.Add(labelBodyColor); panelObject.Controls.Add(labelBodyColor);
panelObject.Controls.Add(pictureBoxObject); panelObject.Controls.Add(pictureBoxObject);
@@ -267,6 +276,7 @@
// //
// labelAdditionalColor // labelAdditionalColor
// //
labelAdditionalColor.AllowDrop = true;
labelAdditionalColor.BorderStyle = BorderStyle.FixedSingle; labelAdditionalColor.BorderStyle = BorderStyle.FixedSingle;
labelAdditionalColor.Location = new Point(109, 6); labelAdditionalColor.Location = new Point(109, 6);
labelAdditionalColor.Name = "labelAdditionalColor"; labelAdditionalColor.Name = "labelAdditionalColor";
@@ -274,9 +284,12 @@
labelAdditionalColor.TabIndex = 11; labelAdditionalColor.TabIndex = 11;
labelAdditionalColor.Text = "Доп. цвет"; labelAdditionalColor.Text = "Доп. цвет";
labelAdditionalColor.TextAlign = ContentAlignment.MiddleCenter; labelAdditionalColor.TextAlign = ContentAlignment.MiddleCenter;
labelAdditionalColor.DragDrop += LabelAdditionalColor_DragDrop;
labelAdditionalColor.DragEnter += LabelColor_DragEnter;
// //
// labelBodyColor // labelBodyColor
// //
labelBodyColor.AllowDrop = true;
labelBodyColor.BorderStyle = BorderStyle.FixedSingle; labelBodyColor.BorderStyle = BorderStyle.FixedSingle;
labelBodyColor.Location = new Point(14, 6); labelBodyColor.Location = new Point(14, 6);
labelBodyColor.Name = "labelBodyColor"; labelBodyColor.Name = "labelBodyColor";
@@ -284,12 +297,14 @@
labelBodyColor.TabIndex = 10; labelBodyColor.TabIndex = 10;
labelBodyColor.Text = "Цвет"; labelBodyColor.Text = "Цвет";
labelBodyColor.TextAlign = ContentAlignment.MiddleCenter; labelBodyColor.TextAlign = ContentAlignment.MiddleCenter;
labelBodyColor.DragDrop += LabelBodyColor_DragDrop;
labelBodyColor.DragEnter += LabelColor_DragEnter;
// //
// pictureBoxObject // pictureBoxObject
// //
pictureBoxObject.Location = new Point(14, 37); pictureBoxObject.Location = new Point(14, 47);
pictureBoxObject.Name = "pictureBoxObject"; pictureBoxObject.Name = "pictureBoxObject";
pictureBoxObject.Size = new Size(185, 127); pictureBoxObject.Size = new Size(185, 117);
pictureBoxObject.TabIndex = 0; pictureBoxObject.TabIndex = 0;
pictureBoxObject.TabStop = false; pictureBoxObject.TabStop = false;
// //

View File

@@ -1,4 +1,5 @@
using ProjectMotorBoat.Drawings; using ProjectMotorBoat.Drawings;
using ProjectMotorBoat.Entities;
/// <summary> /// <summary>
/// Форма конфигурации объекта /// Форма конфигурации объекта
@@ -15,13 +16,14 @@ namespace ProjectMotorBoat
/// <summary> /// <summary>
/// Событие для предачи объекта /// Событие для предачи объекта
/// </summary> /// </summary>
private event BoatDelegate BoatDelegate; Action<DrawingBoat> BoatDelegate;
/// <summary> /// <summary>
/// Конструктор /// Конструктор
/// </summary> /// </summary>
public FormBoatConfig() public FormBoatConfig()
{ {
InitializeComponent();
panelPink.MouseDown += Panel_MouseDown; panelPink.MouseDown += Panel_MouseDown;
panelOrange.MouseDown += Panel_MouseDown; panelOrange.MouseDown += Panel_MouseDown;
panelYellow.MouseDown += Panel_MouseDown; panelYellow.MouseDown += Panel_MouseDown;
@@ -31,15 +33,15 @@ namespace ProjectMotorBoat
panelWhite.MouseDown += Panel_MouseDown; panelWhite.MouseDown += Panel_MouseDown;
panelRed.MouseDown += Panel_MouseDown; panelRed.MouseDown += Panel_MouseDown;
// TODO buttonCancel.Click привязать анонимный метод через lambda с закрытием формы // buttonCancel.Click привязать анонимный метод через lambda с закрытием формы
InitializeComponent(); buttonCancel.Click += (sender, e) => Close();
} }
/// <summary> /// <summary>
/// Привязка внешнего метода к событию /// Привязка внешнего метода к событию
/// </summary> /// </summary>
/// <param name="carDelegate"></param> /// <param name="boatDelegate"></param>
public void AddEvent(BoatDelegate boatDelegate) public void AddEvent(Action<DrawingBoat> boatDelegate)
{ {
BoatDelegate += boatDelegate; BoatDelegate += boatDelegate;
} }
@@ -77,6 +79,11 @@ namespace ProjectMotorBoat
e.Effect = e.Data?.GetDataPresent(DataFormats.Text) ?? false ? DragDropEffects.Copy : DragDropEffects.None; e.Effect = e.Data?.GetDataPresent(DataFormats.Text) ?? false ? DragDropEffects.Copy : DragDropEffects.None;
} }
/// <summary>
/// Действия при приеме перетаскиваемой информации
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void PanelObject_DragDrop(object sender, DragEventArgs e) private void PanelObject_DragDrop(object sender, DragEventArgs e)
{ {
switch (e.Data?.GetData(DataFormats.Text)?.ToString()) switch (e.Data?.GetData(DataFormats.Text)?.ToString())
@@ -100,10 +107,40 @@ namespace ProjectMotorBoat
/// <param name="e"></param> /// <param name="e"></param>
private void Panel_MouseDown(object? sender, MouseEventArgs e) private void Panel_MouseDown(object? sender, MouseEventArgs e)
{ {
// TODO отправка цвета в Drag&Drop // отправка цвета в Drag&Drop
(sender as Panel)?.DoDragDrop((sender as Panel)?.BackColor.Name ?? string.Empty, DragDropEffects.Move | DragDropEffects.Copy);
} }
// TODO Реализовать логику смены цветов: основного и дополнительного (для продвинутого объекта) // Реализовать логику смены цветов: основного и дополнительного (для продвинутого объекта)
private void LabelColor_DragEnter(object sender, DragEventArgs e)
{
if (e.Data?.GetDataPresent(DataFormats.Text) ?? false)
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void LabelBodyColor_DragDrop(object sender, DragEventArgs e)
{
if (_boat != null)
{
_boat?.EntityBoat?.SetBodyColor(Color.FromName(e.Data?.GetData(DataFormats.Text)?.ToString()));
DrawObject();
}
}
private void LabelAdditionalColor_DragDrop(object sender, DragEventArgs e)
{
if (_boat?.EntityBoat is EntityMotorBoat _motorBoat)
{
_motorBoat?.SetAdditionalColor(Color.FromName(e.Data?.GetData(DataFormats.Text)?.ToString()));
DrawObject();
}
}
/// <summary> /// <summary>
/// Передача объекта /// Передача объекта