Готовая Lab_5

This commit is contained in:
Максим Егоров 2024-03-11 01:13:49 +03:00
parent bfb444524a
commit 688a6b5333
7 changed files with 53 additions and 37 deletions

View File

@ -138,7 +138,7 @@ namespace Sailboat.DrawingObjects
g.DrawPolygon(pen, hull);
Brush addBrush = new
SolidBrush(Color.Green);
SolidBrush(Color.Aqua);
g.FillEllipse(addBrush, _startPosX + 20, _startPosY + 100, 90, 40);
g.DrawEllipse(pen, _startPosX + 20, _startPosY + 100, 90, 40);

View File

@ -26,7 +26,7 @@ namespace Sailboat.DrawingObjects
{
return;
}
Pen pen = new(Color.Black);
Pen pen = new(Color.Aqua);
Brush additionalBrush = new
SolidBrush(sailboat.AdditionalColor);

View File

@ -13,6 +13,14 @@ namespace Sailboat.Entities
public Color BodyColor { get; private set; }
public void setBodyColor(Color color) { BodyColor = color; }
public double Step => (double)Speed * 100 / Weight;
public void ChangeColor(Color color)
{
BodyColor = color;
}
/// <summary>
/// Конструктор с параметрами
/// </summary>
public EntityBoat(int speed, double weight, Color bodyColor)
{
Speed = speed;

View File

@ -12,6 +12,14 @@ namespace Sailboat.Entities
public void setAdditionalColor(Color color) { AdditionalColor = color; }
public bool Hull { get; private set; }
public bool Sail { get; private set; }
public void ChangeAddColor(Color color)
{
AdditionalColor = color;
}
/// <summary>
/// Инициализация полей объекта-класса парусной лодки
/// </summary>
public EntitySailboat(int speed, double weight, Color bodyColor, Color
additionalColor, bool hull, bool sail) : base (speed, weight, bodyColor)
{

View File

@ -59,10 +59,11 @@ namespace Sailboat
{
return;
}
FormSailboat form = new();
if (form.ShowDialog() == DialogResult.OK)
FormBoatConfig form = new FormBoatConfig(pictureBoxCollection.Width, pictureBoxCollection.Height);
form.Show();
Action<DrawingBoat>? boatDelegate = new((plane) =>
{
if (obj + form.SelectedBoat)
if (obj + plane)
{
MessageBox.Show("Объект добавлен");
pictureBoxCollection.Image = obj.ShowBoats();
@ -71,7 +72,8 @@ namespace Sailboat
{
MessageBox.Show("Не удалось добавить объект");
}
}
});
form.AddEvent(boatDelegate);
}
private void buttonRemoveBoat_Click(object sender, EventArgs e)

View File

@ -176,7 +176,7 @@
this.labelModifiedObject.TabIndex = 8;
this.labelModifiedObject.Text = "Продвинутый";
this.labelModifiedObject.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.labelModifiedObject.MouseDown += new System.Windows.Forms.MouseEventHandler(this.LabelObject_MouseDown);
this.labelModifiedObject.MouseDown += new System.Windows.Forms.MouseEventHandler(this.LableObject_MouseDown);
//
// labelSimpleObject
//
@ -187,7 +187,7 @@
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);
this.labelSimpleObject.MouseDown += new System.Windows.Forms.MouseEventHandler(this.LableObject_MouseDown);
//
// checkBoxSail
//
@ -326,7 +326,7 @@
this.buttonOk.TabIndex = 3;
this.buttonOk.Text = "Добавить";
this.buttonOk.UseVisualStyleBackColor = true;
this.buttonOk.Click += new System.EventHandler(this.ButtonOk_Click);
this.buttonOk.Click += new System.EventHandler(this.buttonOk_Click);
//
// buttonCancel
//

View File

@ -1,4 +1,6 @@
using System;
using Sailboat.DrawingObjects;
using Sailboat.Entities;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
@ -8,19 +10,18 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Sailboat.DrawingObjects;
using Sailboat.Generics;
using Sailboat.MovementStrategy;
using Sailboat.Entities;
namespace Sailboat
{
public partial class FormBoatConfig : Form
{
DrawingBoat? _boat = null;
private event Action<DrawingBoat>? EventAddBoat;
public FormBoatConfig()
public int _pictureWidth { get; private set; }
public int _pictureHeight { get; private set; }
public FormBoatConfig(int pictureWidth, int pictureHeight)
{
_pictureWidth = pictureWidth;
_pictureHeight = pictureHeight;
InitializeComponent();
panelBlack.MouseDown += PanelColor_MouseDown;
panelPurple.MouseDown += PanelColor_MouseDown;
@ -53,18 +54,21 @@ namespace Sailboat
EventAddBoat += ev;
}
}
private void PanelColor_MouseDown(object sender, MouseEventArgs e)
{
(sender as Panel)?.DoDragDrop((sender as Panel)?.BackColor, DragDropEffects.Move | DragDropEffects.Copy);
}
private void LabelObject_MouseDown(object sender, MouseEventArgs e)
private void LableObject_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;
@ -81,34 +85,29 @@ namespace Sailboat
{
case "labelSimpleObject":
_boat = new DrawingBoat((int)numericUpDownSpeed.Value,
(int)numericUpDownWeight.Value, Color.White, pictureBoxObject.Width,
pictureBoxObject.Height);
(int)numericUpDownWeight.Value, Color.White, _pictureWidth, _pictureHeight);
break;
case "labelModifiedObject":
_boat = new DrawingSailboat((int)numericUpDownSpeed.Value,
(int)numericUpDownWeight.Value, Color.White, Color.Black, checkBoxHull.Checked,
checkBoxSail.Checked, pictureBoxObject.Width,
pictureBoxObject.Height);
checkBoxSail.Checked, _pictureWidth, _pictureHeight);
break;
}
DrawBoat();
}
private void LabelColor_DragDrop(object sender, DragEventArgs e)
{
if (_boat == null)
if (_boat?.EntityBoat == null)
return;
switch (((Label)sender).Name)
{
case "labelColor":
_boat.EntityBoat.setBodyColor((Color)e.Data.GetData(typeof(Color)));
break;
case "labelAddColor":
if (!(_boat is DrawingSailboat))
return;
(_boat.EntityBoat as EntitySailboat).setAdditionalColor((Color)e.Data.GetData(typeof(Color)));
break;
Color bodyColor = (Color)e.Data.GetData(typeof(Color));
_boat.EntityBoat.ChangeColor(bodyColor);
DrawBoat();
}
private void addColorLabel_DragDrop(object sender, DragEventArgs e)
{
if ((_boat?.EntityBoat == null) || (_boat is DrawingSailboat == false))
return;
((EntitySailboat)_boat.EntityBoat).ChangeAddColor((Color)e.Data.GetData(typeof(Color)));
DrawBoat();
}
private void LabelColor_DragEnter(object sender, DragEventArgs e)
@ -122,8 +121,7 @@ namespace Sailboat
e.Effect = DragDropEffects.None;
}
}
private void ButtonOk_Click(object sender, EventArgs e)
private void buttonOk_Click(object sender, EventArgs e)
{
EventAddBoat?.Invoke(_boat);
Close();