diff --git a/DrawingBoat.cs b/DrawingBoat.cs
index 20f38cc..b050b2e 100644
--- a/DrawingBoat.cs
+++ b/DrawingBoat.cs
@@ -16,7 +16,7 @@ namespace PIbd_21_Potapov_N.S._Catamaran_Base
///
/// Класс-сущность
///
- public EntityBoat Boat { protected set; get; }
+ public EntityBoat Boat { private set; get; }
///
/// Левая координата отрисовки лодки
///
@@ -140,5 +140,29 @@ namespace PIbd_21_Potapov_N.S._Catamaran_Base
g.DrawEllipse(Pens.Black, _startPosX + _boatWidth / 8, _startPosY + _boatHeight / 8,
_boatWidth / 2, _boatHeight - _boatHeight / 4);
}
+ ///
+ /// Смена границ формы отрисовки
+ ///
+ /// Ширина картинки
+ /// Высота картинки
+ public void ChangeBorders(int width, int height)
+ {
+ _pictureWidth = width;
+ _pictureHeight = height;
+ if (_pictureWidth <= _boatWidth || _pictureHeight <= _boatHeight)
+ {
+ _pictureWidth = null;
+ _pictureHeight = null;
+ return;
+ }
+ if (_startPosX + _boatWidth > _pictureWidth)
+ {
+ _startPosX = _pictureWidth.Value - _boatWidth;
+ }
+ if (_startPosY + _boatHeight > _pictureHeight)
+ {
+ _startPosY = _pictureHeight.Value - _boatHeight;
+ }
+ }
}
}
diff --git a/FormBoat.Designer.cs b/FormBoat.Designer.cs
index bd65501..174d2e0 100644
--- a/FormBoat.Designer.cs
+++ b/FormBoat.Designer.cs
@@ -29,30 +29,31 @@ namespace PIbd_21_Potapov_N.S._Catamaran_Base
///
private void InitializeComponent()
{
- this.btn_new = new System.Windows.Forms.Button();
+ this.ButtonCreate = new System.Windows.Forms.Button();
this.statusStrip = new System.Windows.Forms.StatusStrip();
this.toolStripStatusLabelSpeed = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusLabelWeight = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusLabelColor = new System.Windows.Forms.ToolStripStatusLabel();
this.groupBox = new System.Windows.Forms.GroupBox();
- this.btn_up = new System.Windows.Forms.Button();
- this.btn_down = new System.Windows.Forms.Button();
- this.btn_left = new System.Windows.Forms.Button();
- this.btn_right = new System.Windows.Forms.Button();
- this.pictureBox = new System.Windows.Forms.PictureBox();
+ this.ButtonUp = new System.Windows.Forms.Button();
+ this.ButtonDown = new System.Windows.Forms.Button();
+ this.ButtonLeft = new System.Windows.Forms.Button();
+ this.ButtonRight = new System.Windows.Forms.Button();
+ this.pictureBoxBoat = new System.Windows.Forms.PictureBox();
this.statusStrip.SuspendLayout();
this.groupBox.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBoxBoat)).BeginInit();
this.SuspendLayout();
//
- // btn_new
+ // ButtonCreate
//
- this.btn_new.Location = new System.Drawing.Point(12, 344);
- this.btn_new.Name = "btn_new";
- this.btn_new.Size = new System.Drawing.Size(75, 63);
- this.btn_new.TabIndex = 10;
- this.btn_new.Text = "Создать";
- this.btn_new.Click += new System.EventHandler(this.btn_new_Click);
+ this.ButtonCreate.Location = new System.Drawing.Point(10, 277);
+ this.ButtonCreate.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.ButtonCreate.Name = "ButtonCreate";
+ this.ButtonCreate.Size = new System.Drawing.Size(118, 28);
+ this.ButtonCreate.TabIndex = 10;
+ this.ButtonCreate.Text = "Создать";
+ this.ButtonCreate.Click += new System.EventHandler(this.ButtonCreate_Click);
//
// statusStrip
//
@@ -61,121 +62,115 @@ namespace PIbd_21_Potapov_N.S._Catamaran_Base
this.toolStripStatusLabelSpeed,
this.toolStripStatusLabelWeight,
this.toolStripStatusLabelColor});
- this.statusStrip.Location = new System.Drawing.Point(0, 415);
+ this.statusStrip.Location = new System.Drawing.Point(0, 309);
this.statusStrip.Name = "statusStrip";
- this.statusStrip.Size = new System.Drawing.Size(1074, 26);
+ this.statusStrip.Padding = new System.Windows.Forms.Padding(1, 0, 12, 0);
+ this.statusStrip.Size = new System.Drawing.Size(940, 22);
this.statusStrip.TabIndex = 8;
this.statusStrip.Text = "statusStrip";
//
// toolStripStatusLabelSpeed
//
this.toolStripStatusLabelSpeed.Name = "toolStripStatusLabelSpeed";
- this.toolStripStatusLabelSpeed.Size = new System.Drawing.Size(80, 20);
+ this.toolStripStatusLabelSpeed.Size = new System.Drawing.Size(65, 17);
this.toolStripStatusLabelSpeed.Text = "Скорость: ";
//
// toolStripStatusLabelWeight
//
this.toolStripStatusLabelWeight.Name = "toolStripStatusLabelWeight";
- this.toolStripStatusLabelWeight.Size = new System.Drawing.Size(40, 20);
+ this.toolStripStatusLabelWeight.Size = new System.Drawing.Size(32, 17);
this.toolStripStatusLabelWeight.Text = "Вес: ";
//
// toolStripStatusLabelColor
//
this.toolStripStatusLabelColor.Name = "toolStripStatusLabelColor";
- this.toolStripStatusLabelColor.Size = new System.Drawing.Size(49, 20);
+ this.toolStripStatusLabelColor.Size = new System.Drawing.Size(39, 17);
this.toolStripStatusLabelColor.Text = "Цвет: ";
//
// groupBox
//
this.groupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.groupBox.Controls.Add(this.btn_up);
- this.groupBox.Controls.Add(this.btn_down);
- this.groupBox.Controls.Add(this.btn_left);
- this.groupBox.Controls.Add(this.btn_right);
- this.groupBox.Location = new System.Drawing.Point(923, 325);
- this.groupBox.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.groupBox.Controls.Add(this.ButtonUp);
+ this.groupBox.Controls.Add(this.ButtonDown);
+ this.groupBox.Controls.Add(this.ButtonLeft);
+ this.groupBox.Controls.Add(this.ButtonRight);
+ this.groupBox.Location = new System.Drawing.Point(808, 244);
this.groupBox.Name = "groupBox";
- this.groupBox.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.groupBox.Size = new System.Drawing.Size(139, 88);
+ this.groupBox.Size = new System.Drawing.Size(122, 66);
this.groupBox.TabIndex = 9;
this.groupBox.TabStop = false;
//
- // btn_up
+ // ButtonUp
//
- this.btn_up.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
- this.btn_up.Image = global::PIbd_21_Potapov_N.S._Catamaran_Base.Properties.Resources.arrow_up1;
- this.btn_up.Location = new System.Drawing.Point(51, 0);
- this.btn_up.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.btn_up.Name = "btn_up";
- this.btn_up.Size = new System.Drawing.Size(40, 40);
- this.btn_up.TabIndex = 1;
- this.btn_up.UseVisualStyleBackColor = true;
- this.btn_up.Click += new System.EventHandler(this.btn_move_Click);
+ this.ButtonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.ButtonUp.Image = global::PIbd_21_Potapov_N.S._Catamaran_Base.Properties.Resources.arrow_up1;
+ this.ButtonUp.Location = new System.Drawing.Point(45, 0);
+ this.ButtonUp.Name = "ButtonUp";
+ this.ButtonUp.Size = new System.Drawing.Size(35, 30);
+ this.ButtonUp.TabIndex = 1;
+ this.ButtonUp.UseVisualStyleBackColor = true;
+ this.ButtonUp.Click += new System.EventHandler(this.ButtonMove_Click);
//
- // btn_down
+ // ButtonDown
//
- this.btn_down.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
- this.btn_down.Image = global::PIbd_21_Potapov_N.S._Catamaran_Base.Properties.Resources.arrow_down1;
- this.btn_down.Location = new System.Drawing.Point(51, 42);
- this.btn_down.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.btn_down.Name = "btn_down";
- this.btn_down.Size = new System.Drawing.Size(40, 40);
- this.btn_down.TabIndex = 2;
- this.btn_down.Text = " ";
- this.btn_down.UseVisualStyleBackColor = true;
- this.btn_down.Click += new System.EventHandler(this.btn_move_Click);
+ this.ButtonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.ButtonDown.Image = global::PIbd_21_Potapov_N.S._Catamaran_Base.Properties.Resources.arrow_down1;
+ this.ButtonDown.Location = new System.Drawing.Point(45, 32);
+ this.ButtonDown.Name = "ButtonDown";
+ this.ButtonDown.Size = new System.Drawing.Size(35, 30);
+ this.ButtonDown.TabIndex = 2;
+ this.ButtonDown.Text = " ";
+ this.ButtonDown.UseVisualStyleBackColor = true;
+ this.ButtonDown.Click += new System.EventHandler(this.ButtonMove_Click);
//
- // btn_left
+ // ButtonLeft
//
- this.btn_left.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
- this.btn_left.Image = global::PIbd_21_Potapov_N.S._Catamaran_Base.Properties.Resources.arrow_left1;
- this.btn_left.Location = new System.Drawing.Point(5, 42);
- this.btn_left.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.btn_left.Name = "btn_left";
- this.btn_left.Size = new System.Drawing.Size(40, 40);
- this.btn_left.TabIndex = 3;
- this.btn_left.UseVisualStyleBackColor = true;
- this.btn_left.Click += new System.EventHandler(this.btn_move_Click);
+ this.ButtonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.ButtonLeft.Image = global::PIbd_21_Potapov_N.S._Catamaran_Base.Properties.Resources.arrow_left1;
+ this.ButtonLeft.Location = new System.Drawing.Point(4, 32);
+ this.ButtonLeft.Name = "ButtonLeft";
+ this.ButtonLeft.Size = new System.Drawing.Size(35, 30);
+ this.ButtonLeft.TabIndex = 3;
+ this.ButtonLeft.UseVisualStyleBackColor = true;
+ this.ButtonLeft.Click += new System.EventHandler(this.ButtonMove_Click);
//
- // btn_right
+ // ButtonRight
//
- this.btn_right.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
- this.btn_right.Image = global::PIbd_21_Potapov_N.S._Catamaran_Base.Properties.Resources.arrow_right1;
- this.btn_right.Location = new System.Drawing.Point(97, 44);
- this.btn_right.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.btn_right.Name = "btn_right";
- this.btn_right.Size = new System.Drawing.Size(40, 40);
- this.btn_right.TabIndex = 4;
- this.btn_right.UseVisualStyleBackColor = true;
- this.btn_right.Click += new System.EventHandler(this.btn_move_Click);
+ this.ButtonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.ButtonRight.Image = global::PIbd_21_Potapov_N.S._Catamaran_Base.Properties.Resources.arrow_right1;
+ this.ButtonRight.Location = new System.Drawing.Point(85, 33);
+ this.ButtonRight.Name = "ButtonRight";
+ this.ButtonRight.Size = new System.Drawing.Size(35, 30);
+ this.ButtonRight.TabIndex = 4;
+ this.ButtonRight.UseVisualStyleBackColor = true;
+ this.ButtonRight.Click += new System.EventHandler(this.ButtonMove_Click);
//
- // pictureBox
+ // pictureBoxBoat
//
- this.pictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
- this.pictureBox.Location = new System.Drawing.Point(0, 0);
- this.pictureBox.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.pictureBox.Name = "pictureBox";
- this.pictureBox.Size = new System.Drawing.Size(1074, 441);
- this.pictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
- this.pictureBox.TabIndex = 0;
- this.pictureBox.TabStop = false;
+ this.pictureBoxBoat.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.pictureBoxBoat.Location = new System.Drawing.Point(0, 0);
+ this.pictureBoxBoat.Name = "pictureBoxBoat";
+ this.pictureBoxBoat.Size = new System.Drawing.Size(940, 331);
+ this.pictureBoxBoat.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
+ this.pictureBoxBoat.TabIndex = 0;
+ this.pictureBoxBoat.TabStop = false;
+ this.pictureBoxBoat.Resize += new System.EventHandler(this.PictureBoxBoat_Resize);
//
- // FormCatamaran
+ // FormBoat
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
+ this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(1074, 441);
+ this.ClientSize = new System.Drawing.Size(940, 331);
this.Controls.Add(this.groupBox);
- this.Controls.Add(this.btn_new);
+ this.Controls.Add(this.ButtonCreate);
this.Controls.Add(this.statusStrip);
- this.Controls.Add(this.pictureBox);
- this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.Name = "FormCatamaran";
+ this.Controls.Add(this.pictureBoxBoat);
+ this.Name = "FormBoat";
this.Text = "Лодка";
this.statusStrip.ResumeLayout(false);
this.statusStrip.PerformLayout();
this.groupBox.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBoxBoat)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@@ -183,12 +178,12 @@ namespace PIbd_21_Potapov_N.S._Catamaran_Base
#endregion
- private System.Windows.Forms.PictureBox pictureBox;
- private System.Windows.Forms.Button btn_up;
- private System.Windows.Forms.Button btn_down;
- private System.Windows.Forms.Button btn_left;
- private System.Windows.Forms.Button btn_right;
- private System.Windows.Forms.Button btn_new;
+ private System.Windows.Forms.PictureBox pictureBoxBoat;
+ private System.Windows.Forms.Button ButtonUp;
+ private System.Windows.Forms.Button ButtonDown;
+ private System.Windows.Forms.Button ButtonLeft;
+ private System.Windows.Forms.Button ButtonRight;
+ private System.Windows.Forms.Button ButtonCreate;
private System.Windows.Forms.StatusStrip statusStrip;
private System.Windows.Forms.GroupBox groupBox;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelSpeed;
diff --git a/FormBoat.cs b/FormBoat.cs
index f2e2c9e..46194bb 100644
--- a/FormBoat.cs
+++ b/FormBoat.cs
@@ -12,68 +12,94 @@ namespace PIbd_21_Potapov_N.S._Catamaran_Base
{
public partial class FormBoat : System.Windows.Forms.Form
{
- DrawingBoat boatDrawObj;
+ DrawingBoat _boat;
public FormBoat()
{
InitializeComponent();
- pictureBox.Image = new Bitmap(pictureBox.Width, pictureBox.Height);
}
-
- private void btn_new_Click(object sender, EventArgs e)
+ ///
+ /// Обработчик нажатия кнопки "Создать"
+ ///
+ private void ButtonCreate_Click(object sender, EventArgs e)
{
Random rnd = new Random();
- boatDrawObj = new DrawingBoat();
- boatDrawObj.Init(rnd.Next(50, 100), rnd.Next(50, 100), Color.FromArgb(rnd.Next(0, 255), rnd.Next(0, 255), rnd.Next(0, 255)));
- boatDrawObj.SetPosition(rnd.Next(10, 50), rnd.Next(10, 50), pictureBox.Width, pictureBox.Height - statusStrip.Height);
- toolStripStatusLabelSpeed.Text = $"Скорость: {boatDrawObj.Boat.Speed}";
- toolStripStatusLabelWeight.Text = $"Вес: {boatDrawObj.Boat.Weight}";
- toolStripStatusLabelColor.Text = $"Цвет: {boatDrawObj.Boat.BodyColor.Name}";
- RedrawCatamaran();
+ _boat = new DrawingBoat();
+ _boat.Init(
+ rnd.Next(50, 100),
+ rnd.Next(50, 100),
+ Color.FromArgb(rnd.Next(0, 255), rnd.Next(0, 255), rnd.Next(0, 255))
+ );
+ _boat.SetPosition(
+ rnd.Next(10, 50),
+ rnd.Next(10, 50),
+ pictureBoxBoat.Width,
+ pictureBoxBoat.Height - statusStrip.Height
+ );
+ toolStripStatusLabelSpeed.Text = $"Скорость: {_boat.Boat.Speed}";
+ toolStripStatusLabelWeight.Text = $"Вес: {_boat.Boat.Weight}";
+ toolStripStatusLabelColor.Text = $"Цвет: {_boat.Boat.BodyColor.Name}";
+ Draw();
}
-
- private void btn_move_Click(object sender, EventArgs e)
+ ///
+ /// Обработчик нажатия кнопок передвижения
+ ///
+ ///
+ ///
+ private void ButtonMove_Click(object sender, EventArgs e)
{
- if (boatDrawObj == null)
+ if (_boat == null)
return;
string btnName = ((Button)sender).Name;
switch (btnName)
{
- case "btn_up":
+ case "ButtonUp":
{
- boatDrawObj.MoveTransport(Direction.Up);
+ _boat.MoveTransport(Direction.Up);
}
break;
- case "btn_down":
+ case "ButtonDown":
{
- boatDrawObj.MoveTransport(Direction.Down);
+ _boat.MoveTransport(Direction.Down);
}
break;
- case "btn_left":
+ case "ButtonLeft":
{
- boatDrawObj.MoveTransport(Direction.Left);
+ _boat.MoveTransport(Direction.Left);
}
break;
- case "btn_right":
+ case "ButtonRight":
{
- boatDrawObj.MoveTransport(Direction.Right);
+ _boat.MoveTransport(Direction.Right);
}
break;
default:
break;
}
- RedrawCatamaran();
+ Draw();
}
-
- private void RedrawCatamaran()
+ ///
+ /// Метод прорисовки лодки
+ ///
+ private void Draw()
{
- Graphics g = Graphics.FromImage(pictureBox.Image);
- g.Clear(Color.White);
- boatDrawObj.DrawTransport(g);
- pictureBox.Invalidate();
+ Bitmap bmp = new(pictureBoxBoat.Width, pictureBoxBoat.Height);
+ Graphics g = Graphics.FromImage(bmp);
+ _boat?.DrawTransport(g);
+ pictureBoxBoat.Image = bmp;
+ }
+ ///
+ /// Изменение размеров формы
+ ///
+ ///
+ ///
+ private void PictureBoxBoat_Resize(object sender, EventArgs e)
+ {
+ _boat?.ChangeBorders(pictureBoxBoat.Width, pictureBoxBoat.Height - statusStrip.Height);
+ Draw();
}
}
}