diff --git a/Laba1Loco/Laba1Loco.sln b/Laba1Loco/Laba1Loco.sln index 6263144..930d05f 100644 --- a/Laba1Loco/Laba1Loco.sln +++ b/Laba1Loco/Laba1Loco.sln @@ -1,9 +1,9 @@ - + Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.5.33424.131 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Laba1Loco", "Laba1Loco\Laba1Loco.csproj", "{9F9C9603-3EF7-403E-A895-04EA0CBC5586}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Laba1Loco", "Laba1Loco\Laba1Loco.csproj", "{9F9C9603-3EF7-403E-A895-04EA0CBC5586}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/Laba1Loco/Laba1Loco/App.config b/Laba1Loco/Laba1Loco/App.config index 56efbc7..ecdcf8a 100644 --- a/Laba1Loco/Laba1Loco/App.config +++ b/Laba1Loco/Laba1Loco/App.config @@ -1,6 +1,6 @@ - + - + - \ No newline at end of file + diff --git a/Laba1Loco/Laba1Loco/DrawingTrain.cs b/Laba1Loco/Laba1Loco/DrawingTrain.cs index 1b5f49a..8622934 100644 --- a/Laba1Loco/Laba1Loco/DrawingTrain.cs +++ b/Laba1Loco/Laba1Loco/DrawingTrain.cs @@ -18,11 +18,11 @@ namespace Laba1Loco /// /// Ширина окна /// - protected int _pictureWidth; + public int _pictureWidth; /// /// Высота окна /// - protected int _pictureHeight; + public int _pictureHeight; /// /// Левая координата прорисовки локомотива /// diff --git a/Laba1Loco/Laba1Loco/EntityLoco.cs b/Laba1Loco/Laba1Loco/EntityLoco.cs index e158b55..0017528 100644 --- a/Laba1Loco/Laba1Loco/EntityLoco.cs +++ b/Laba1Loco/Laba1Loco/EntityLoco.cs @@ -10,6 +10,9 @@ namespace Laba1Loco internal class EntityLoco : EntityTrain { public Color AdditionalColor { get; private set; } + + public void setAdditionalColor(Color color) { AdditionalColor = color; } + /// /// Признак (опция) наличия трубы /// diff --git a/Laba1Loco/Laba1Loco/EntityTrain.cs b/Laba1Loco/Laba1Loco/EntityTrain.cs index aa2b403..c945fe5 100644 --- a/Laba1Loco/Laba1Loco/EntityTrain.cs +++ b/Laba1Loco/Laba1Loco/EntityTrain.cs @@ -21,6 +21,9 @@ namespace Laba1Loco /// Основной цвет /// public Color BodyColor { get; private set; } + + public void setBodyColor(Color color) { BodyColor = color; } + /// /// Шаг перемещения поезда /// diff --git a/Laba1Loco/Laba1Loco/FormTrainCollection.cs b/Laba1Loco/Laba1Loco/FormTrainCollection.cs index 0ef95df..f1f84a0 100644 --- a/Laba1Loco/Laba1Loco/FormTrainCollection.cs +++ b/Laba1Loco/Laba1Loco/FormTrainCollection.cs @@ -46,13 +46,9 @@ namespace Laba1Loco } } - /// - /// Добавление объекта в набор - /// - /// - /// - private void ButtonAddTrain_Click(object sender, EventArgs e) + private void AddTrain(DrawingTrain train) { + //проверка что бы ничего не сломалось if (listBoxStorage.SelectedIndex == -1) { return; @@ -62,20 +58,37 @@ namespace Laba1Loco { return; } - FormLocomotive form = new FormLocomotive(); - if (form.ShowDialog() == DialogResult.OK) + if ((obj + train) != -1) { - if ((obj + form.SelectedTrain) != -1) - { - MessageBox.Show("Объект добавлен"); - pictureBoxCollection.Image = obj.ShowTrains(); - } - else - { - MessageBox.Show("Не удалось добавить объект"); - } + MessageBox.Show("Объект добавлен"); + pictureBoxCollection.Image = obj.ShowTrains(); } - form.timer1.Stop(); + else + { + MessageBox.Show("Не удалось добавить объект"); + } + } + + /// + /// Добавление объекта в набор + /// + /// + /// + private void ButtonAddTrain_Click(object sender, EventArgs e) + { + //проверка что бы не вызывалась формочка + if (listBoxStorage.SelectedIndex == -1) + { + return; + } + var obj = _storage[listBoxStorage.SelectedItem.ToString() ?? string.Empty]; + if (obj == null) + { + return; + } + FormTrainConfig form = new FormTrainConfig(); + form.Show(); + form.AddEvent(AddTrain); } /// /// Удаление объекта из набора diff --git a/Laba1Loco/Laba1Loco/FormTrainConfig.Designer.cs b/Laba1Loco/Laba1Loco/FormTrainConfig.Designer.cs new file mode 100644 index 0000000..66fa3f9 --- /dev/null +++ b/Laba1Loco/Laba1Loco/FormTrainConfig.Designer.cs @@ -0,0 +1,397 @@ +namespace Laba1Loco +{ + partial class FormTrainConfig + { + /// + /// 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() + { + ParamsGroup = new System.Windows.Forms.GroupBox(); + labelLoco = new System.Windows.Forms.Label(); + labelTrain = new System.Windows.Forms.Label(); + groupBoxColors = new System.Windows.Forms.GroupBox(); + panelPurple = new System.Windows.Forms.Panel(); + panelYellow = new System.Windows.Forms.Panel(); + panelBlue = new System.Windows.Forms.Panel(); + panelRed = new System.Windows.Forms.Panel(); + panelDarkBlue = new System.Windows.Forms.Panel(); + panelOrange = new System.Windows.Forms.Panel(); + panelGreen = new System.Windows.Forms.Panel(); + panelGray = new System.Windows.Forms.Panel(); + checkBoxFuelTank = new System.Windows.Forms.CheckBox(); + checkBoxSmokeTube = new System.Windows.Forms.CheckBox(); + checkBoxLocoLine = new System.Windows.Forms.CheckBox(); + numericWeight = new System.Windows.Forms.NumericUpDown(); + numericSpeed = new System.Windows.Forms.NumericUpDown(); + weightLabel = new System.Windows.Forms.Label(); + speedLabel = new System.Windows.Forms.Label(); + panel9 = new System.Windows.Forms.Panel(); + pictureBox = new System.Windows.Forms.PictureBox(); + buttonAdd = new System.Windows.Forms.Button(); + buttonCancel = new System.Windows.Forms.Button(); + labelColor = new System.Windows.Forms.Label(); + labelAdditionalColor = new System.Windows.Forms.Label(); + ParamsGroup.SuspendLayout(); + groupBoxColors.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)numericWeight).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericSpeed).BeginInit(); + panel9.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)pictureBox).BeginInit(); + SuspendLayout(); + // + // ParamsGroup + // + ParamsGroup.Controls.Add(labelLoco); + ParamsGroup.Controls.Add(labelTrain); + ParamsGroup.Controls.Add(groupBoxColors); + ParamsGroup.Controls.Add(checkBoxFuelTank); + ParamsGroup.Controls.Add(checkBoxSmokeTube); + ParamsGroup.Controls.Add(checkBoxLocoLine); + ParamsGroup.Controls.Add(numericWeight); + ParamsGroup.Controls.Add(numericSpeed); + ParamsGroup.Controls.Add(weightLabel); + ParamsGroup.Controls.Add(speedLabel); + ParamsGroup.Location = new System.Drawing.Point(4, 2); + ParamsGroup.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + ParamsGroup.Name = "ParamsGroup"; + ParamsGroup.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + ParamsGroup.Size = new System.Drawing.Size(210, 555); + ParamsGroup.TabIndex = 0; + ParamsGroup.TabStop = false; + ParamsGroup.Text = "Params Group Box"; + // + // labelLoco + // + labelLoco.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + labelLoco.Location = new System.Drawing.Point(105, 483); + labelLoco.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + labelLoco.Name = "labelLoco"; + labelLoco.Size = new System.Drawing.Size(76, 42); + labelLoco.TabIndex = 10; + labelLoco.Text = "Loco"; + labelLoco.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + labelLoco.MouseDown += LabelObject_MouseDown; + // + // labelTrain + // + labelTrain.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + labelTrain.Location = new System.Drawing.Point(16, 483); + labelTrain.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + labelTrain.Name = "labelTrain"; + labelTrain.Size = new System.Drawing.Size(76, 42); + labelTrain.TabIndex = 9; + labelTrain.Text = "Train"; + labelTrain.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + labelTrain.MouseDown += LabelObject_MouseDown; + // + // groupBoxColors + // + groupBoxColors.Controls.Add(panelPurple); + groupBoxColors.Controls.Add(panelYellow); + groupBoxColors.Controls.Add(panelBlue); + groupBoxColors.Controls.Add(panelRed); + groupBoxColors.Controls.Add(panelDarkBlue); + groupBoxColors.Controls.Add(panelOrange); + groupBoxColors.Controls.Add(panelGreen); + groupBoxColors.Controls.Add(panelGray); + groupBoxColors.Location = new System.Drawing.Point(14, 201); + groupBoxColors.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + groupBoxColors.Name = "groupBoxColors"; + groupBoxColors.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + groupBoxColors.Size = new System.Drawing.Size(184, 261); + groupBoxColors.TabIndex = 8; + groupBoxColors.TabStop = false; + groupBoxColors.Text = "Colors"; + // + // panelPurple + // + panelPurple.BackColor = System.Drawing.Color.Fuchsia; + panelPurple.Location = new System.Drawing.Point(94, 207); + panelPurple.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + panelPurple.Name = "panelPurple"; + panelPurple.Size = new System.Drawing.Size(49, 46); + panelPurple.TabIndex = 3; + // + // panelYellow + // + panelYellow.BackColor = System.Drawing.Color.Yellow; + panelYellow.Location = new System.Drawing.Point(94, 81); + panelYellow.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + panelYellow.Name = "panelYellow"; + panelYellow.Size = new System.Drawing.Size(49, 46); + panelYellow.TabIndex = 1; + // + // panelBlue + // + panelBlue.BackColor = System.Drawing.Color.Cyan; + panelBlue.Location = new System.Drawing.Point(94, 144); + panelBlue.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + panelBlue.Name = "panelBlue"; + panelBlue.Size = new System.Drawing.Size(49, 46); + panelBlue.TabIndex = 4; + // + // panelRed + // + panelRed.BackColor = System.Drawing.Color.Red; + panelRed.Location = new System.Drawing.Point(94, 18); + panelRed.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + panelRed.Name = "panelRed"; + panelRed.Size = new System.Drawing.Size(49, 46); + panelRed.TabIndex = 1; + // + // panelDarkBlue + // + panelDarkBlue.BackColor = System.Drawing.Color.Blue; + panelDarkBlue.Location = new System.Drawing.Point(29, 207); + panelDarkBlue.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + panelDarkBlue.Name = "panelDarkBlue"; + panelDarkBlue.Size = new System.Drawing.Size(49, 46); + panelDarkBlue.TabIndex = 5; + // + // panelOrange + // + panelOrange.BackColor = System.Drawing.Color.LightSalmon; + panelOrange.Location = new System.Drawing.Point(29, 81); + panelOrange.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + panelOrange.Name = "panelOrange"; + panelOrange.Size = new System.Drawing.Size(49, 46); + panelOrange.TabIndex = 1; + // + // panelGreen + // + panelGreen.BackColor = System.Drawing.Color.Lime; + panelGreen.Location = new System.Drawing.Point(29, 144); + panelGreen.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + panelGreen.Name = "panelGreen"; + panelGreen.Size = new System.Drawing.Size(49, 46); + panelGreen.TabIndex = 2; + // + // panelGray + // + panelGray.BackColor = System.Drawing.Color.Silver; + panelGray.Location = new System.Drawing.Point(29, 18); + panelGray.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + panelGray.Name = "panelGray"; + panelGray.Size = new System.Drawing.Size(49, 46); + panelGray.TabIndex = 0; + // + // checkBoxFuelTank + // + checkBoxFuelTank.AutoSize = true; + checkBoxFuelTank.Location = new System.Drawing.Point(16, 135); + checkBoxFuelTank.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + checkBoxFuelTank.Name = "checkBoxFuelTank"; + checkBoxFuelTank.Size = new System.Drawing.Size(74, 19); + checkBoxFuelTank.TabIndex = 7; + checkBoxFuelTank.Text = "Fuel tank"; + checkBoxFuelTank.UseVisualStyleBackColor = true; + // + // checkBoxSmokeTube + // + checkBoxSmokeTube.AutoSize = true; + checkBoxSmokeTube.Location = new System.Drawing.Point(16, 112); + checkBoxSmokeTube.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + checkBoxSmokeTube.Name = "checkBoxSmokeTube"; + checkBoxSmokeTube.Size = new System.Drawing.Size(89, 19); + checkBoxSmokeTube.TabIndex = 6; + checkBoxSmokeTube.Text = "Smoke tube"; + checkBoxSmokeTube.UseVisualStyleBackColor = true; + // + // checkBoxLocoLine + // + checkBoxLocoLine.AutoSize = true; + checkBoxLocoLine.Location = new System.Drawing.Point(16, 162); + checkBoxLocoLine.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + checkBoxLocoLine.Name = "checkBoxLocoLine"; + checkBoxLocoLine.Size = new System.Drawing.Size(74, 19); + checkBoxLocoLine.TabIndex = 5; + checkBoxLocoLine.Text = "Loco line"; + checkBoxLocoLine.UseVisualStyleBackColor = true; + // + // numericWeight + // + numericWeight.Location = new System.Drawing.Point(58, 59); + numericWeight.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + numericWeight.Maximum = new decimal(new int[] { 1000, 0, 0, 0 }); + numericWeight.Minimum = new decimal(new int[] { 100, 0, 0, 0 }); + numericWeight.Name = "numericWeight"; + numericWeight.Size = new System.Drawing.Size(140, 23); + numericWeight.TabIndex = 4; + numericWeight.Value = new decimal(new int[] { 100, 0, 0, 0 }); + // + // numericSpeed + // + numericSpeed.Location = new System.Drawing.Point(58, 27); + numericSpeed.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + numericSpeed.Maximum = new decimal(new int[] { 1000, 0, 0, 0 }); + numericSpeed.Minimum = new decimal(new int[] { 100, 0, 0, 0 }); + numericSpeed.Name = "numericSpeed"; + numericSpeed.Size = new System.Drawing.Size(140, 23); + numericSpeed.TabIndex = 3; + numericSpeed.Value = new decimal(new int[] { 100, 0, 0, 0 }); + // + // weightLabel + // + weightLabel.AutoSize = true; + weightLabel.Location = new System.Drawing.Point(10, 59); + weightLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + weightLabel.Name = "weightLabel"; + weightLabel.Size = new System.Drawing.Size(39, 15); + weightLabel.TabIndex = 2; + weightLabel.Text = "weigh"; + // + // speedLabel + // + speedLabel.AutoSize = true; + speedLabel.Location = new System.Drawing.Point(10, 29); + speedLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + speedLabel.Name = "speedLabel"; + speedLabel.Size = new System.Drawing.Size(38, 15); + speedLabel.TabIndex = 1; + speedLabel.Text = "speed"; + // + // panel9 + // + panel9.AllowDrop = true; + panel9.Controls.Add(pictureBox); + panel9.Location = new System.Drawing.Point(233, 87); + panel9.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + panel9.Name = "panel9"; + panel9.Size = new System.Drawing.Size(686, 390); + panel9.TabIndex = 11; + panel9.DragDrop += PanelObject_DragDrop; + panel9.DragEnter += PanelObject_DragEnter; + // + // pictureBox + // + pictureBox.Location = new System.Drawing.Point(16, 6); + pictureBox.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + pictureBox.Name = "pictureBox"; + pictureBox.Size = new System.Drawing.Size(648, 381); + pictureBox.TabIndex = 0; + pictureBox.TabStop = false; + // + // buttonAdd + // + buttonAdd.Location = new System.Drawing.Point(233, 486); + buttonAdd.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new System.Drawing.Size(88, 27); + buttonAdd.TabIndex = 12; + buttonAdd.Text = "Add"; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonOk_Click; + // + // buttonCancel + // + buttonCancel.Location = new System.Drawing.Point(601, 486); + buttonCancel.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new System.Drawing.Size(88, 27); + buttonCancel.TabIndex = 13; + buttonCancel.Text = "Cancel"; + buttonCancel.UseVisualStyleBackColor = true; + // + // labelColor + // + labelColor.AllowDrop = true; + labelColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + labelColor.Location = new System.Drawing.Point(233, 29); + labelColor.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + labelColor.Name = "labelColor"; + labelColor.Size = new System.Drawing.Size(116, 26); + labelColor.TabIndex = 14; + labelColor.Text = "Color"; + labelColor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + labelColor.DragDrop += labelColor_DragDrop; + labelColor.DragEnter += labelColor_DragEnter; + // + // labelAdditionalColor + // + labelAdditionalColor.AllowDrop = true; + labelAdditionalColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + labelAdditionalColor.Location = new System.Drawing.Point(601, 28); + labelAdditionalColor.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + labelAdditionalColor.Name = "labelAdditionalColor"; + labelAdditionalColor.Size = new System.Drawing.Size(116, 26); + labelAdditionalColor.TabIndex = 15; + labelAdditionalColor.Text = "Additional color"; + labelAdditionalColor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + labelAdditionalColor.DragDrop += labelColor_DragDrop; + labelAdditionalColor.DragEnter += labelColor_DragEnter; + // + // FormTrainConfig + // + AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + ClientSize = new System.Drawing.Size(933, 558); + Controls.Add(labelAdditionalColor); + Controls.Add(labelColor); + Controls.Add(buttonCancel); + Controls.Add(buttonAdd); + Controls.Add(panel9); + Controls.Add(ParamsGroup); + Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + Name = "FormTrainConfig"; + Text = "FormTrainConfig"; + ParamsGroup.ResumeLayout(false); + ParamsGroup.PerformLayout(); + groupBoxColors.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)numericWeight).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericSpeed).EndInit(); + panel9.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)pictureBox).EndInit(); + ResumeLayout(false); + } + + #endregion + + private System.Windows.Forms.GroupBox ParamsGroup; + private System.Windows.Forms.CheckBox checkBoxFuelTank; + private System.Windows.Forms.CheckBox checkBoxSmokeTube; + private System.Windows.Forms.CheckBox checkBoxLocoLine; + private System.Windows.Forms.NumericUpDown numericWeight; + private System.Windows.Forms.NumericUpDown numericSpeed; + private System.Windows.Forms.Label weightLabel; + private System.Windows.Forms.Label speedLabel; + private System.Windows.Forms.GroupBox groupBoxColors; + private System.Windows.Forms.Panel panelPurple; + private System.Windows.Forms.Panel panelYellow; + private System.Windows.Forms.Panel panelBlue; + private System.Windows.Forms.Panel panelRed; + private System.Windows.Forms.Panel panelDarkBlue; + private System.Windows.Forms.Panel panelOrange; + private System.Windows.Forms.Panel panelGreen; + private System.Windows.Forms.Panel panelGray; + private System.Windows.Forms.Label labelLoco; + private System.Windows.Forms.Label labelTrain; + private System.Windows.Forms.Panel panel9; + private System.Windows.Forms.PictureBox pictureBox; + private System.Windows.Forms.Button buttonAdd; + private System.Windows.Forms.Button buttonCancel; + private System.Windows.Forms.Label labelColor; + private System.Windows.Forms.Label labelAdditionalColor; + } +} \ No newline at end of file diff --git a/Laba1Loco/Laba1Loco/FormTrainConfig.cs b/Laba1Loco/Laba1Loco/FormTrainConfig.cs new file mode 100644 index 0000000..17d2139 --- /dev/null +++ b/Laba1Loco/Laba1Loco/FormTrainConfig.cs @@ -0,0 +1,164 @@ +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; + +namespace Laba1Loco +{ + public partial class FormTrainConfig : Form + { + Color defaultColor; + /// + /// Переменная-выбранный поезд + /// + DrawingTrain _train = null; + /// + /// Событие + /// + private event Action EventAddTrain; + /// + /// Конструктор + /// + public FormTrainConfig() + { + InitializeComponent(); + + panelGray.MouseDown += panelColor_MouseDown; + panelRed.MouseDown += panelColor_MouseDown; + panelOrange.MouseDown += panelColor_MouseDown; + panelYellow.MouseDown += panelColor_MouseDown; + panelGreen.MouseDown += panelColor_MouseDown; + panelBlue.MouseDown += panelColor_MouseDown; + panelDarkBlue.MouseDown += panelColor_MouseDown; + panelPurple.MouseDown += panelColor_MouseDown; + + defaultColor = labelColor.BackColor; + buttonCancel.Click += (s, e) => Close(); + } + /// + /// Отрисовать поезд + /// + private void DrawTrain() + { + Bitmap bmp = new Bitmap(pictureBox.Width, pictureBox.Height); + Graphics gr = Graphics.FromImage(bmp); + _train?.SetPosition(5, 5); + if (_train is DrawingLoco) + (_train as DrawingLoco).DrawTransport(gr); + else + _train?.DrawTransport(gr); + pictureBox.Image = bmp; + } + /// + /// Добавление события + /// + /// Привязанный метод + internal void AddEvent(Action ev) + { + if (EventAddTrain == null) + { + EventAddTrain = ev; + } + else + { + EventAddTrain += ev; + } + } + /// + /// Передаем информацию при нажатии на Label + /// + /// + /// + private void LabelObject_MouseDown(object sender, MouseEventArgs e) + { + (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) + { + e.Effect = DragDropEffects.Copy; + } + else + { + e.Effect = DragDropEffects.None; + } + } + /// + /// Действия при приеме перетаскиваемой информации + /// + /// + /// + private void PanelObject_DragDrop(object sender, DragEventArgs e) + { + switch (e.Data?.GetData(DataFormats.Text).ToString()) + { + case "labelTrain": + _train = new DrawingTrain((int)numericSpeed.Value,(int)numericWeight.Value, Color.White, pictureBox.Width,pictureBox.Height); + break; + case "labelLoco": + _train = new DrawingLoco((int)numericSpeed.Value,(int)numericWeight.Value, Color.White, Color.Black, checkBoxSmokeTube.Checked, checkBoxFuelTank.Checked, checkBoxLocoLine.Checked, pictureBox.Width, pictureBox.Height); + break; + } + labelColor.BackColor = defaultColor; + labelAdditionalColor.BackColor = defaultColor; + DrawTrain(); + } + /// + /// Добавление поезда + /// + /// + /// + private void ButtonOk_Click(object sender, EventArgs e) + { + EventAddTrain?.Invoke(_train); + Close(); + } + + private void panelColor_MouseDown(object sender, MouseEventArgs e) + { + (sender as Panel)?.DoDragDrop((sender as Panel)?.BackColor, DragDropEffects.Move | DragDropEffects.Copy); + } + + private void labelColor_DragEnter(object sender, DragEventArgs e) + { + if (e.Data?.GetDataPresent(typeof(Color)) ?? false) + { + e.Effect = DragDropEffects.Copy; + } + else + { + e.Effect = DragDropEffects.None; + } + } + + private void labelColor_DragDrop(object sender, DragEventArgs e) + { + if (_train == null) + return; + ((Label)sender).BackColor = (Color)e.Data.GetData(typeof(Color)); + switch (((Label)sender).Name) + { + case "labelColor": + _train.EntityTrain.setBodyColor((Color)e.Data.GetData(typeof(Color))); + break; + case "labelAdditionalColor": + if (!(_train is DrawingLoco)) + return; + (_train.EntityTrain as EntityLoco).setAdditionalColor((Color)e.Data.GetData(typeof(Color))); + break; + } + DrawTrain(); + } + } +} diff --git a/Laba1Loco/Laba1Loco/FormTrainConfig.resx b/Laba1Loco/Laba1Loco/FormTrainConfig.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/Laba1Loco/Laba1Loco/FormTrainConfig.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/Laba1Loco/Laba1Loco/Laba1Loco.csproj b/Laba1Loco/Laba1Loco/Laba1Loco.csproj index 28cd54b..19bb665 100644 --- a/Laba1Loco/Laba1Loco/Laba1Loco.csproj +++ b/Laba1Loco/Laba1Loco/Laba1Loco.csproj @@ -1,123 +1,13 @@ - - - + - Debug - AnyCPU - {9F9C9603-3EF7-403E-A895-04EA0CBC5586} + net7.0-windows WinExe - Laba1Loco - Laba1Loco - v4.7.2 - 512 - true - true - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 + false + true + true - - - - - - - - - - - + + - - - - Form - - - FormTrainCollection.cs - - - - - - - - - - Form - - - FormLocomotive.cs - - - - - - - - - - - - FormLocomotive.cs - - - FormTrainCollection.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - True - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Laba1Loco/Laba1Loco/Properties/AssemblyInfo.cs b/Laba1Loco/Laba1Loco/Properties/AssemblyInfo.cs deleted file mode 100644 index 3f30958..0000000 --- a/Laba1Loco/Laba1Loco/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// Общие сведения об этой сборке предоставляются следующим набором -// набора атрибутов. Измените значения этих атрибутов для изменения сведений, -// связанных со сборкой. -[assembly: AssemblyTitle("Laba1Loco")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Laba1Loco")] -[assembly: AssemblyCopyright("Copyright © 2023")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми -// для компонентов COM. Если необходимо обратиться к типу в этой сборке через -// COM, следует установить атрибут ComVisible в TRUE для этого типа. -[assembly: ComVisible(false)] - -// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM -[assembly: Guid("9f9c9603-3ef7-403e-a895-04ea0cbc5586")] - -// Сведения о версии сборки состоят из указанных ниже четырех значений: -// -// Основной номер версии -// Дополнительный номер версии -// Номер сборки -// Редакция -// -// Можно задать все значения или принять номера сборки и редакции по умолчанию -// используя "*", как показано ниже: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Laba1Loco/Laba1Loco/Properties/Settings.Designer.cs b/Laba1Loco/Laba1Loco/Properties/Settings.Designer.cs index 62a7f82..9663800 100644 --- a/Laba1Loco/Laba1Loco/Properties/Settings.Designer.cs +++ b/Laba1Loco/Laba1Loco/Properties/Settings.Designer.cs @@ -1,28 +1,24 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. // //------------------------------------------------------------------------------ -namespace Laba1Loco.Properties -{ - - +namespace Laba1Loco.Properties { + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase - { - + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.8.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default - { - get - { + + public static Settings Default { + get { return defaultInstance; } } diff --git a/Laba1Loco/Laba1Loco/TrainsGenericCollection.cs b/Laba1Loco/Laba1Loco/TrainsGenericCollection.cs index 3ad62b6..adf066c 100644 --- a/Laba1Loco/Laba1Loco/TrainsGenericCollection.cs +++ b/Laba1Loco/Laba1Loco/TrainsGenericCollection.cs @@ -124,6 +124,8 @@ where U : IMoveableObject { if (train != null) { + train._pictureHeight = _pictureHeight; + train._pictureWidth = _pictureWidth; train.SetPosition((i % (_pictureWidth / _placeSizeWidth)) * _placeSizeWidth, (i / (_pictureWidth / _placeSizeWidth)) * _placeSizeHeight); if (train is DrawingLoco) (train as DrawingLoco).DrawTransport(g);