Добавлена отрисовка иллюминаторов

This commit is contained in:
Павел Путилин 2022-10-30 16:41:04 +04:00
parent 578c521364
commit d72ac4a556
5 changed files with 96 additions and 2 deletions

View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AirplaneWithRadar
{
internal enum CountPortholes
{
Ten = 10,
Twetwenty = 20,
Thirty = 30,
}
}

View File

@ -10,6 +10,7 @@ namespace AirplaneWithRadar
/// Класс-сущность
/// </summary>
public EntityAirplane Airplane { private set; get; }
public DrawningAirplanePortholes DrawningPortholes { get; private set; }
/// <summary>
/// Левая координата отрисовки самолёта
/// </summary>
@ -44,6 +45,8 @@ namespace AirplaneWithRadar
{
Airplane = new EntityAirplane();
Airplane.Init(speed, weight, bodyColor);
DrawningPortholes = new();
DrawningPortholes.CountPortholes = 30;
}
/// <summary>
/// Установка позиции
@ -141,8 +144,8 @@ namespace AirplaneWithRadar
g.FillPolygon(brush, point);
//крылья
g.DrawLine(pen, _startPosX + 20, _startPosY + h - 3, _startPosX + 60, _startPosY + h - 3);
g.DrawLine(pen, _startPosX + 20, _startPosY + h - 2, _startPosX + 60, _startPosY + h - 2);
g.DrawLine(pen, _startPosX + 20, _startPosY + h , _startPosX + 60, _startPosY + h );
g.DrawLine(pen, _startPosX + 20, _startPosY + h +1 , _startPosX + 60, _startPosY + h +1);
g.DrawLine(pen, _startPosX - 1, _startPosY + h / 3, _startPosX + 15, _startPosY + h / 3);
g.DrawLine(pen, _startPosX - 1, _startPosY + h / 3 + 1, _startPosX + 15, _startPosY + h / 3 + 1);
@ -152,7 +155,9 @@ namespace AirplaneWithRadar
g.DrawRectangle(pen, _startPosX + 20, _startPosY + h + (h / 3), 2, 2);
g.DrawRectangle(pen, _startPosX + 24, _startPosY + h + (h / 3), 2, 2);
g.DrawRectangle(pen, _startPosX + _airplaneWidth - 20, _startPosY + h + (h / 3), 2, 2);
DrawningPortholes.DrawPortholes(g, (int)_startPosX+5, (int)_startPosY+5, (int)_airplaneWidth);
_startPosY -= 4;
}
/// <summary>
/// Смена границ формы отрисовки

View File

@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AirplaneWithRadar
{
internal class DrawningAirplanePortholes
{
private CountPortholes _countPortholes;
public int CountPortholes
{
get
{
return (int)_countPortholes;
}
set
{
_countPortholes = (CountPortholes)(value);
}
}
public void DrawPortholes(Graphics g, int _startPosX, int _startPosY, int _airplaneWidth)
{
int middle = _startPosX + ((_airplaneWidth - 25) / 2);
DrawPorthole(g, middle, _startPosY);
int left = middle - 5;
int right = middle + 5;
for (var i = 1; i <= CountPortholes / 4; i += 1)
{
DrawPorthole(g, left, _startPosY);
left -= 5;
DrawPorthole(g, right, _startPosY);
right += 5;
}
}
private void DrawPorthole(Graphics g, int _startPosX, int _startPosY)
{
Pen pen = new(Color.Black);
g.DrawRectangle(pen, _startPosX, _startPosY, 2, 2);
}
}
}

View File

@ -38,6 +38,8 @@
this.buttonLeft = new System.Windows.Forms.Button();
this.buttonDown = new System.Windows.Forms.Button();
this.buttonRight = new System.Windows.Forms.Button();
this.labelPortholes = new System.Windows.Forms.Label();
this.comboBoxPortholes = new System.Windows.Forms.ComboBox();
this.statusStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxAirplane)).BeginInit();
this.SuspendLayout();
@ -142,11 +144,34 @@
this.buttonRight.UseVisualStyleBackColor = true;
this.buttonRight.Click += new System.EventHandler(this.ButtonMove_Click);
//
// labelPortholes
//
this.labelPortholes.AutoSize = true;
this.labelPortholes.Location = new System.Drawing.Point(12, 374);
this.labelPortholes.Name = "labelPortholes";
this.labelPortholes.Size = new System.Drawing.Size(177, 15);
this.labelPortholes.TabIndex = 7;
this.labelPortholes.Text = "Колличество иллюминаторов:";
//
// comboBoxPortholes
//
this.comboBoxPortholes.FormattingEnabled = true;
this.comboBoxPortholes.Items.AddRange(new object[] {
"10",
"20",
"30"});
this.comboBoxPortholes.Location = new System.Drawing.Point(195, 371);
this.comboBoxPortholes.Name = "comboBoxPortholes";
this.comboBoxPortholes.Size = new System.Drawing.Size(44, 23);
this.comboBoxPortholes.TabIndex = 8;
//
// FormAirplane
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.comboBoxPortholes);
this.Controls.Add(this.labelPortholes);
this.Controls.Add(this.buttonRight);
this.Controls.Add(this.buttonDown);
this.Controls.Add(this.buttonLeft);
@ -176,5 +201,7 @@
private Button buttonLeft;
private Button buttonDown;
private Button buttonRight;
private Label labelPortholes;
private ComboBox comboBoxPortholes;
}
}

View File

@ -32,6 +32,7 @@ namespace AirplaneWithRadar
Random rnd = new();
_airplane = new DrawningAirplane();
_airplane.Init(rnd.Next(100, 300), rnd.Next(1000, 2000), Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256)));
_airplane.DrawningPortholes.CountPortholes = Convert.ToInt32(comboBoxPortholes.Text);
_airplane.SetPosition(rnd.Next(20, 100), rnd.Next(20, 100), pictureBoxAirplane.Width, pictureBoxAirplane.Height);
toolStripStatusLabelSpeed.Text = $"Ñêîðîñòü: {_airplane.Airplane.Speed}";
toolStripStatusLabelWeight.Text = $"Âåñ: {_airplane.Airplane.Weight}";