Лабораторная работа №5 (доделал)

This commit is contained in:
Олег Кудринский 2024-04-21 21:44:37 +04:00
parent c8fb45e8a2
commit 07770841c0
2 changed files with 119 additions and 83 deletions

View File

@ -73,8 +73,10 @@
groupBoxConfig.Controls.Add(labelSimpleObject);
groupBoxConfig.Dock = DockStyle.Left;
groupBoxConfig.Location = new Point(0, 0);
groupBoxConfig.Margin = new Padding(2, 1, 2, 1);
groupBoxConfig.Name = "groupBoxConfig";
groupBoxConfig.Size = new Size(1153, 366);
groupBoxConfig.Padding = new Padding(2, 1, 2, 1);
groupBoxConfig.Size = new Size(621, 172);
groupBoxConfig.TabIndex = 0;
groupBoxConfig.TabStop = false;
groupBoxConfig.Text = "Параметры";
@ -89,9 +91,11 @@
groupBoxColors.Controls.Add(panelBlue);
groupBoxColors.Controls.Add(panelGreen);
groupBoxColors.Controls.Add(panelRed);
groupBoxColors.Location = new Point(479, 31);
groupBoxColors.Location = new Point(258, 15);
groupBoxColors.Margin = new Padding(2, 1, 2, 1);
groupBoxColors.Name = "groupBoxColors";
groupBoxColors.Size = new Size(577, 249);
groupBoxColors.Padding = new Padding(2, 1, 2, 1);
groupBoxColors.Size = new Size(311, 117);
groupBoxColors.TabIndex = 8;
groupBoxColors.TabStop = false;
groupBoxColors.Text = "Цвета";
@ -99,73 +103,82 @@
// panelPurple
//
panelPurple.BackColor = Color.Purple;
panelPurple.Location = new Point(477, 153);
panelPurple.Location = new Point(257, 72);
panelPurple.Margin = new Padding(2, 1, 2, 1);
panelPurple.Name = "panelPurple";
panelPurple.Size = new Size(76, 80);
panelPurple.Size = new Size(41, 38);
panelPurple.TabIndex = 7;
//
// panelBlack
//
panelBlack.BackColor = Color.Black;
panelBlack.Location = new Point(326, 153);
panelBlack.Location = new Point(176, 72);
panelBlack.Margin = new Padding(2, 1, 2, 1);
panelBlack.Name = "panelBlack";
panelBlack.Size = new Size(76, 80);
panelBlack.Size = new Size(41, 38);
panelBlack.TabIndex = 6;
//
// panelGray
//
panelGray.BackColor = Color.Gray;
panelGray.Location = new Point(173, 153);
panelGray.Location = new Point(93, 72);
panelGray.Margin = new Padding(2, 1, 2, 1);
panelGray.Name = "panelGray";
panelGray.Size = new Size(76, 80);
panelGray.Size = new Size(41, 38);
panelGray.TabIndex = 5;
//
// panelWhite
//
panelWhite.BackColor = Color.White;
panelWhite.Location = new Point(22, 153);
panelWhite.Location = new Point(12, 72);
panelWhite.Margin = new Padding(2, 1, 2, 1);
panelWhite.Name = "panelWhite";
panelWhite.Size = new Size(76, 80);
panelWhite.Size = new Size(41, 38);
panelWhite.TabIndex = 4;
//
// panelYellow
//
panelYellow.BackColor = Color.Yellow;
panelYellow.Location = new Point(477, 38);
panelYellow.Location = new Point(257, 18);
panelYellow.Margin = new Padding(2, 1, 2, 1);
panelYellow.Name = "panelYellow";
panelYellow.Size = new Size(76, 80);
panelYellow.Size = new Size(41, 38);
panelYellow.TabIndex = 3;
//
// panelBlue
//
panelBlue.BackColor = Color.Blue;
panelBlue.Location = new Point(326, 38);
panelBlue.Location = new Point(176, 18);
panelBlue.Margin = new Padding(2, 1, 2, 1);
panelBlue.Name = "panelBlue";
panelBlue.Size = new Size(76, 80);
panelBlue.Size = new Size(41, 38);
panelBlue.TabIndex = 2;
//
// panelGreen
//
panelGreen.BackColor = Color.Green;
panelGreen.Location = new Point(173, 38);
panelGreen.Location = new Point(93, 18);
panelGreen.Margin = new Padding(2, 1, 2, 1);
panelGreen.Name = "panelGreen";
panelGreen.Size = new Size(76, 80);
panelGreen.Size = new Size(41, 38);
panelGreen.TabIndex = 1;
//
// panelRed
//
panelRed.BackColor = Color.Red;
panelRed.Location = new Point(22, 38);
panelRed.Location = new Point(12, 18);
panelRed.Margin = new Padding(2, 1, 2, 1);
panelRed.Name = "panelRed";
panelRed.Size = new Size(76, 80);
panelRed.Size = new Size(41, 38);
panelRed.TabIndex = 0;
//
// checkBoxCrane
//
checkBoxCrane.AutoSize = true;
checkBoxCrane.Location = new Point(12, 212);
checkBoxCrane.Location = new Point(6, 99);
checkBoxCrane.Margin = new Padding(2, 1, 2, 1);
checkBoxCrane.Name = "checkBoxCrane";
checkBoxCrane.Size = new Size(311, 36);
checkBoxCrane.Size = new Size(158, 19);
checkBoxCrane.TabIndex = 7;
checkBoxCrane.Text = "Признак наличия крана";
checkBoxCrane.UseVisualStyleBackColor = true;
@ -173,57 +186,63 @@
// checkBoxContainer
//
checkBoxContainer.AutoSize = true;
checkBoxContainer.Location = new Point(12, 273);
checkBoxContainer.Location = new Point(6, 128);
checkBoxContainer.Margin = new Padding(2, 1, 2, 1);
checkBoxContainer.Name = "checkBoxContainer";
checkBoxContainer.Size = new Size(392, 36);
checkBoxContainer.Size = new Size(197, 19);
checkBoxContainer.TabIndex = 6;
checkBoxContainer.Text = "Признак наличия контейнеров";
checkBoxContainer.UseVisualStyleBackColor = true;
//
// numericUpDownWeight
//
numericUpDownWeight.Location = new Point(134, 117);
numericUpDownWeight.Location = new Point(72, 55);
numericUpDownWeight.Margin = new Padding(2, 1, 2, 1);
numericUpDownWeight.Maximum = new decimal(new int[] { 1000, 0, 0, 0 });
numericUpDownWeight.Minimum = new decimal(new int[] { 100, 0, 0, 0 });
numericUpDownWeight.Name = "numericUpDownWeight";
numericUpDownWeight.Size = new Size(189, 39);
numericUpDownWeight.Size = new Size(102, 23);
numericUpDownWeight.TabIndex = 5;
numericUpDownWeight.Value = new decimal(new int[] { 100, 0, 0, 0 });
//
// labelWeight
//
labelWeight.AutoSize = true;
labelWeight.Location = new Point(12, 119);
labelWeight.Location = new Point(6, 56);
labelWeight.Margin = new Padding(2, 0, 2, 0);
labelWeight.Name = "labelWeight";
labelWeight.Size = new Size(57, 32);
labelWeight.Size = new Size(29, 15);
labelWeight.TabIndex = 4;
labelWeight.Text = "Вес:";
//
// numericUpDownSpeed
//
numericUpDownSpeed.Location = new Point(134, 56);
numericUpDownSpeed.Location = new Point(72, 26);
numericUpDownSpeed.Margin = new Padding(2, 1, 2, 1);
numericUpDownSpeed.Maximum = new decimal(new int[] { 1000, 0, 0, 0 });
numericUpDownSpeed.Minimum = new decimal(new int[] { 100, 0, 0, 0 });
numericUpDownSpeed.Name = "numericUpDownSpeed";
numericUpDownSpeed.Size = new Size(189, 39);
numericUpDownSpeed.Size = new Size(102, 23);
numericUpDownSpeed.TabIndex = 3;
numericUpDownSpeed.Value = new decimal(new int[] { 100, 0, 0, 0 });
//
// labelSpeed
//
labelSpeed.AutoSize = true;
labelSpeed.Location = new Point(12, 58);
labelSpeed.Location = new Point(6, 27);
labelSpeed.Margin = new Padding(2, 0, 2, 0);
labelSpeed.Name = "labelSpeed";
labelSpeed.Size = new Size(116, 32);
labelSpeed.Size = new Size(59, 15);
labelSpeed.TabIndex = 2;
labelSpeed.Text = "Скорость";
//
// labelModifiedObject
//
labelModifiedObject.BorderStyle = BorderStyle.FixedSingle;
labelModifiedObject.Location = new Point(785, 290);
labelModifiedObject.Location = new Point(423, 136);
labelModifiedObject.Margin = new Padding(2, 0, 2, 0);
labelModifiedObject.Name = "labelModifiedObject";
labelModifiedObject.Size = new Size(271, 64);
labelModifiedObject.Size = new Size(147, 31);
labelModifiedObject.TabIndex = 1;
labelModifiedObject.Text = "Продвинутый";
labelModifiedObject.TextAlign = ContentAlignment.MiddleCenter;
@ -232,9 +251,10 @@
// labelSimpleObject
//
labelSimpleObject.BorderStyle = BorderStyle.FixedSingle;
labelSimpleObject.Location = new Point(479, 290);
labelSimpleObject.Location = new Point(258, 136);
labelSimpleObject.Margin = new Padding(2, 0, 2, 0);
labelSimpleObject.Name = "labelSimpleObject";
labelSimpleObject.Size = new Size(273, 64);
labelSimpleObject.Size = new Size(148, 31);
labelSimpleObject.TabIndex = 0;
labelSimpleObject.Text = "Простой";
labelSimpleObject.TextAlign = ContentAlignment.MiddleCenter;
@ -242,17 +262,19 @@
//
// pictureBoxObject
//
pictureBoxObject.Location = new Point(14, 88);
pictureBoxObject.Location = new Point(8, 41);
pictureBoxObject.Margin = new Padding(2, 1, 2, 1);
pictureBoxObject.Name = "pictureBoxObject";
pictureBoxObject.Size = new Size(358, 172);
pictureBoxObject.Size = new Size(193, 81);
pictureBoxObject.TabIndex = 1;
pictureBoxObject.TabStop = false;
//
// buttonCancel
//
buttonCancel.Location = new Point(1380, 299);
buttonCancel.Location = new Point(743, 140);
buttonCancel.Margin = new Padding(2, 1, 2, 1);
buttonCancel.Name = "buttonCancel";
buttonCancel.Size = new Size(151, 46);
buttonCancel.Size = new Size(81, 22);
buttonCancel.TabIndex = 3;
buttonCancel.Text = "Отмена";
buttonCancel.UseVisualStyleBackColor = true;
@ -263,38 +285,48 @@
panelObject.Controls.Add(labelAdditionalColor);
panelObject.Controls.Add(labelBodyColor);
panelObject.Controls.Add(pictureBoxObject);
panelObject.Location = new Point(1159, 0);
panelObject.Location = new Point(624, 0);
panelObject.Margin = new Padding(2, 1, 2, 1);
panelObject.Name = "panelObject";
panelObject.Size = new Size(388, 280);
panelObject.Size = new Size(209, 131);
panelObject.TabIndex = 4;
panelObject.DragDrop += PanelObject_DragDrop;
panelObject.DragEnter += PanelObject_DragEnter;
//
// labelAdditionalColor
//
labelAdditionalColor.AllowDrop = true;
labelAdditionalColor.BorderStyle = BorderStyle.FixedSingle;
labelAdditionalColor.Location = new Point(201, 18);
labelAdditionalColor.Location = new Point(108, 8);
labelAdditionalColor.Margin = new Padding(2, 0, 2, 0);
labelAdditionalColor.Name = "labelAdditionalColor";
labelAdditionalColor.Size = new Size(171, 53);
labelAdditionalColor.TabIndex = 3;
labelAdditionalColor.Text = "Доп. Цвет";
labelAdditionalColor.Size = new Size(93, 26);
labelAdditionalColor.TabIndex = 5;
labelAdditionalColor.Text = "Доп. цвет";
labelAdditionalColor.TextAlign = ContentAlignment.MiddleCenter;
labelAdditionalColor.DragDrop += LabelColor_DragDrop;
labelAdditionalColor.DragEnter += LabelObject_DragEnter;
//
// labelBodyColor
//
labelBodyColor.AllowDrop = true;
labelBodyColor.BorderStyle = BorderStyle.FixedSingle;
labelBodyColor.Location = new Point(14, 18);
labelBodyColor.Location = new Point(8, 8);
labelBodyColor.Margin = new Padding(2, 0, 2, 0);
labelBodyColor.Name = "labelBodyColor";
labelBodyColor.Size = new Size(171, 53);
labelBodyColor.TabIndex = 2;
labelBodyColor.Size = new Size(93, 26);
labelBodyColor.TabIndex = 4;
labelBodyColor.Text = "Цвет";
labelBodyColor.TextAlign = ContentAlignment.MiddleCenter;
labelBodyColor.DragDrop += LabelColor_DragDrop;
labelBodyColor.DragEnter += LabelObject_DragEnter;
//
// buttonAdd
//
buttonAdd.Location = new Point(1173, 299);
buttonAdd.Location = new Point(632, 140);
buttonAdd.Margin = new Padding(2, 1, 2, 1);
buttonAdd.Name = "buttonAdd";
buttonAdd.Size = new Size(151, 46);
buttonAdd.Size = new Size(81, 22);
buttonAdd.TabIndex = 5;
buttonAdd.Text = "Добавить";
buttonAdd.UseVisualStyleBackColor = true;
@ -302,13 +334,14 @@
//
// FormShipConfig
//
AutoScaleDimensions = new SizeF(13F, 32F);
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(1559, 366);
ClientSize = new Size(839, 172);
Controls.Add(buttonAdd);
Controls.Add(panelObject);
Controls.Add(buttonCancel);
Controls.Add(groupBoxConfig);
Margin = new Padding(2, 1, 2, 1);
Name = "FormShipConfig";
Text = "Создание объекта";
groupBoxConfig.ResumeLayout(false);
@ -345,7 +378,7 @@
private Button buttonCancel;
private Panel panelObject;
private Button buttonAdd;
private Label labelAdditionalColor;
private Label labelBodyColor;
private Label labelAdditionalColor;
}
}

View File

@ -70,7 +70,7 @@ public partial class FormShipConfig : Form
}
/// <summary>
/// Передаем информацию при нажатии на Label
/// Передаем информацию при нажатии на label
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
@ -80,7 +80,7 @@ public partial class FormShipConfig : Form
}
/// <summary>
/// Проверка получаемой информации (ее типа на соответствие требуемому)
/// Проверка получаемой информации(на её соответсвие требуемому)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
@ -102,47 +102,48 @@ public partial class FormShipConfig : Form
_ship = new DrawningShip((int)numericUpDownSpeed.Value, (double)numericUpDownWeight.Value, Color.White);
break;
case "labelModifiedObject":
_ship = new DrawningContainerShip((int)numericUpDownSpeed.Value, (double)numericUpDownWeight.Value,
Color.White, Color.Black, checkBoxCrane.Checked, checkBoxContainer.Checked);
_ship = new DrawningContainerShip((int)numericUpDownSpeed.Value, (double)numericUpDownWeight.Value, Color.White,
Color.Black, checkBoxCrane.Checked, checkBoxContainer.Checked);
break;
}
DrawObject();
}
private void LabelColors_DragDrop(object? sender, DragEventArgs e)
private void Panel_MouseDown(object? sender, MouseEventArgs e)
{
if (_ship == null || sender == null || _ship.EntityShip == null)
(sender as Panel)?.DoDragDrop((sender as Panel)?.BackColor ?? Color.White, DragDropEffects.Move | DragDropEffects.Copy);
}
private void LabelObject_DragEnter(object sender, DragEventArgs e)
{
if (!e.Data.GetDataPresent(typeof(Color)))
{
return;
e.Effect = DragDropEffects.None;
}
Label label = (Label)sender;
Color newColor = (Color)e.Data?.GetData(typeof(Color));
switch (label.Name)
else
{
case "labelBodyColor":
_ship.EntityShip.SetBodyColor(newColor);
DrawObject();
break;
case "labelAdditionalColor":
if (_ship is DrawningContainerShip)
{
(_ship.EntityShip as EntityContainerShip)?.SetAdditionalColor(newColor);
DrawObject();
}
break;
e.Effect = DragDropEffects.Copy;
}
}
/// <summary>
/// Передаем информацию при нажатии на Panel
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Panel_MouseDown(object? sender, MouseEventArgs e)
private void LabelColor_DragDrop(object sender, DragEventArgs e)
{
(sender as Panel)?.DoDragDrop((sender as Panel)?.BackColor, DragDropEffects.Move | DragDropEffects.Copy);
if (_ship == null) return;
switch ((sender as Label).Name)
{
case "labelBodyColor":
_ship.EntityShip?.SetBodyColor((Color)e.Data.GetData(typeof(Color)));
break;
case "labelAdditionalColor":
if (_ship is DrawningContainerShip containerShip)
{
((EntityContainerShip)containerShip.EntityShip)?.SetAdditionalColor((Color)e.Data.GetData(typeof(Color)));
}
break;
}
DrawObject();
}
/// <summary>
@ -159,3 +160,5 @@ public partial class FormShipConfig : Form
}
}
}