Compare commits

..

7 Commits
main ... Laba1

12 changed files with 860 additions and 53 deletions

View File

@ -0,0 +1,22 @@
namespace PrLaba1;
public enum Direction
{
///<summary>
///Вверх
///</summary>
Up = 1,
///<summary>
///Вниз
///</summary>
Down = 2,
///<summary>
///Влево
///</summary>
Left = 3,
/// <summary>
/// Направо
/// </summary>
Right = 4
}

View File

@ -0,0 +1,53 @@
using System.Drawing;
namespace PrLaba1;
public class DiselLoko
{
/// <summary>
/// Скорость
/// </summary>
public int Speed { get; private set; }
/// <summary>
/// вес
/// </summary>
public double Weight { get; private set; }
/// <summary>
/// Цвет тела
/// </summary>
public Color ColorBody { get; private set; }
/// <summary>
/// цвет бака
/// </summary>
public Color ColorComportament { get; private set; }
/// <summary>
/// Признак наличия трубы
/// </summary>
public bool IsTube { get; private set; }
/// <summary>
/// Признак наличия отсека
/// </summary>
public bool IsComportament { get; private set; }
/// <summary>
/// шаг, перемещенние обьекта
/// </summary>
public double Step => Speed * 100 / Weight;
/// <summary>
/// Инициализация
/// </summary>
/// <param name="speed"></param>
/// <param name="weight"></param>
/// <param name="colorBody"></param>
/// <param name="Comportament"></param>
/// <param name="isTube"></param>
/// <param name="isComportament"></param>
public void Init(int speed, double weight, Color colorBody, Color Comportament, bool isTube, bool isComportament)
{
Speed = speed;
Weight = weight;
ColorBody = colorBody;
ColorComportament = Comportament;
IsTube = isTube;
IsComportament = isComportament;
}
}

View File

@ -0,0 +1,321 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PrLaba1;
public class DrawningDiselLoko
{
///<summary>
///Класс-сущность
///</summary>
public DiselLoko? DiselLoko { get; private set; }
///<summary>
///Ширина окна
///</summary>
private int? _pictureWidth;
///<summary>
///Высота окна
///</summary>
private int? _pictureHeight;
///<summary>
///Левая координата прорисовки тепловоза
///</summary>
private int? _startPosX;
///<summary>
///Верхняя координата прорисовки тепловоза
///</summary>
private int? _startPosY;
///<summary>
///Ширина прорисовки тепловоза
///</summary>
private readonly int _drawingCarWidth = 140;
///<summary>
///Высота прорисовки тепловоза
///</summary>
private readonly int _drawingCarHeight = 60;
///<summary>
///Высота прорисовки тепловоза с трубой
///</summary>
private int _drawingCarHeightWithKit = 0;
///<summary>
///Высота прорисовки тепловоза с трубой
///</summary>
private int _WheelHeight = 25;
///<summary>
///ширина вставки сбоку
///</summary>
private int _InsertWidth = 10;
///<summary>
///Иницилизация
///</summary>
/// <param name="speed">Скорость</param>
/// <param name="weight">Вес</param>
/// <param name="colorBody">Цвет тела</param>
/// <param name="colorComportament">Цвет колёс</param>
/// <param name="isTube">Признак езды</param>
/// <param name="isComportament">Признак заполнености</param>
public void Init(int speed, double weight, Color colorBody, Color colorComportament, bool isTube, bool isComportament)
{
DiselLoko = new DiselLoko();
DiselLoko.Init(speed, weight, colorBody, colorComportament, isTube, isComportament);
_pictureWidth = null;
_pictureHeight = null;
_startPosX = null;
_startPosY = null;
}
///<summary>
///Установка границ поля
///</summary>
/// <param name="width">Ширина поля</param>
/// <param name="height">Высота поля</param>
/// <returns>true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах</returns>
public bool SetPictureSize(int width, int height)
{
// TODO проверка, что объект "влезает" в размеры поля
// если влезает, сохраняем границы и корректируем позицию объекта, если она была уже установлена
if (width <= _startPosX || height <= _startPosY) { return false; }
_pictureWidth = width;
_pictureHeight = height;
return true;
}
/// <summary>
/// Установка позиции
/// </summary>
/// <param name="x">Координата X</param>
/// <param name="y">Координата Y</param>
public void SetPosition(int x, int y)
{
if (!_pictureHeight.HasValue || !_pictureWidth.HasValue)
{
return;
}
if (x < 0)
{
x = 1;
}
if (y < 0) { y = 1; }
if (x + _drawingCarWidth > _pictureWidth.Value) {
x = _pictureWidth.Value - _drawingCarWidth - 1;
}
if (y + _drawingCarHeight > _pictureHeight.Value)
{
y = _pictureHeight.Value - _drawingCarHeight - 1;
}
_startPosX = x;
_startPosY = y;
}
/// <summary>
/// Изменение направления перемещения
/// </summary>
/// <param name="direction">Направление</param>
/// <returns>true - перемещене выполнено, false - перемещение невозможно</returns>
public bool MoveTransport(Direction direction)
{
if (DiselLoko == null || !_startPosX.HasValue || !_startPosY.HasValue)
{
return false;
}
switch (direction)
{
//влево
case Direction.Left:
if (_startPosX.Value - DiselLoko.Step > 0)
{
_startPosX -= (int)DiselLoko.Step;
}
return true;
//вверх
case Direction.Up:
if (_startPosY.Value - _drawingCarHeightWithKit >= 0 && DiselLoko.IsTube)
{
_startPosY = _startPosY - (int)DiselLoko.Step;
}else if(_startPosY.Value - DiselLoko.Step > 0 && !DiselLoko.IsTube)
{
_startPosY = _startPosY - (int)DiselLoko.Step;
}
return true;
// вправо
case Direction.Right:
if (_startPosX.Value < _pictureWidth.Value - _drawingCarWidth-_InsertWidth)
{
_startPosX += (int)DiselLoko.Step;
}
return true;
//вниз
case Direction.Down:
if (_startPosY.Value + _WheelHeight + _drawingCarHeight < _pictureHeight.Value )
{
_startPosY += (int)DiselLoko.Step;
}
return true;
default:
return false;
}
}
/// <summary>
/// Прорисовка объекта
/// </summary>
/// <param name="g"></param>
public void DrawTransport(Graphics g)
{
if (DiselLoko == null || !_startPosX.HasValue || !_startPosY.HasValue)
{
return;
}
Pen pen = new(Color.Black);
Brush additionalBrush = new SolidBrush(DiselLoko.ColorBody);
Brush blueBrush = Brushes.Blue;
Pen blackPen = new Pen(Color.Black, 2);
Brush blackBrush = Brushes.Black;
//корпус
Point[] trainBody = {
new Point(_startPosX.Value, _startPosY.Value),
new Point(_startPosX.Value + _drawingCarWidth, _startPosY.Value),
new Point(_startPosX.Value + _drawingCarWidth, _startPosY.Value + _drawingCarHeight),
new Point(_startPosX.Value-10, _startPosY.Value + _drawingCarHeight),
new Point(_startPosX.Value-10, _startPosY.Value + _drawingCarHeight/2)
};
Brush br = new SolidBrush(DiselLoko.ColorBody);
g.FillPolygon(br, trainBody);
//разделительная линия
g.DrawLine(blackPen, _startPosX.Value-10, _startPosY.Value + _drawingCarHeight / 2, _startPosX.Value + 55, _startPosY.Value + _drawingCarHeight / 2);
g.DrawLine(blackPen, _startPosX.Value + 140, _startPosY.Value + _drawingCarHeight / 2, _startPosX.Value + _drawingCarHeight+15, _startPosY.Value + _drawingCarHeight / 2);
// Окна (полигоны)
Point[] window1 = {
new Point(_startPosX.Value + 10, _startPosY.Value + 10),
new Point(_startPosX.Value + 25, _startPosY.Value + 10),
new Point(_startPosX.Value + 25, _startPosY.Value + 25),
new Point(_startPosX.Value + 10, _startPosY.Value + 25)
};
Point[] window2 = {
new Point(_startPosX.Value + 120, _startPosY.Value + 10),
new Point(_startPosX.Value + 135, _startPosY.Value + 10),
new Point(_startPosX.Value + 135, _startPosY.Value + 25),
new Point(_startPosX.Value + 120, _startPosY.Value + 25)
};
Point[] window3 = {
new Point(_startPosX.Value + 35, _startPosY.Value + 10),
new Point(_startPosX.Value + 50, _startPosY.Value + 10),
new Point(_startPosX.Value + 50, _startPosY.Value + 25),
new Point(_startPosX.Value + 35, _startPosY.Value + 25)
};
g.FillPolygon(blueBrush, window1);
g.FillPolygon(blueBrush, window2);
g.FillPolygon(blueBrush, window3);
g.DrawPolygon(blackPen, window1);
g.DrawPolygon(blackPen, window2);
g.DrawPolygon(blackPen, window3);
// Дверь (полигон)
Point[] door = {
new Point(_startPosX.Value + 55, _startPosY.Value + 10),
new Point(_startPosX.Value + 75, _startPosY.Value + 10),
new Point(_startPosX.Value + 75, _startPosY.Value + 50),
new Point(_startPosX.Value + 55, _startPosY.Value + 50)
};
g.DrawPolygon(blackPen, door);
//колёса
for (int i = 0; i < 4; i++)
{
Brush brBlack = new SolidBrush(Color.Black);
g.FillEllipse(brBlack, _startPosX.Value + (i * 35), _startPosY.Value + _drawingCarHeight, 20, 20);
}
// Черные вставки внизу корпуса (полигон)
Point[] bottomBlack = {
new Point(_startPosX.Value+10, _startPosY.Value + _drawingCarHeight),
new Point(_startPosX.Value + _drawingCarWidth, _startPosY.Value + _drawingCarHeight),
new Point(_startPosX.Value + _drawingCarWidth, _startPosY.Value + _drawingCarHeight + 10),
new Point(_startPosX.Value+10, _startPosY.Value + _drawingCarHeight + 10)
};
Point[] bottomBlack3 = {
new Point(_startPosX.Value, _startPosY.Value + _drawingCarHeight),
new Point(_startPosX.Value+7, _startPosY.Value + _drawingCarHeight),
new Point(_startPosX.Value, _startPosY.Value + _drawingCarHeight+12),
new Point(_startPosX.Value - 15, _startPosY.Value + _drawingCarHeight + 12),
};
Point[] bottomBlack4 = {
new Point(_startPosX.Value+_drawingCarWidth+30, _startPosY.Value + _drawingCarHeight),
new Point(_startPosX.Value + _drawingCarWidth+15, _startPosY.Value + _drawingCarHeight),
new Point(_startPosX.Value + _drawingCarWidth, _startPosY.Value + _drawingCarHeight + 10),
new Point(_startPosX.Value+_drawingCarWidth+45, _startPosY.Value + _drawingCarHeight + 10)
};
g.FillPolygon(blackBrush, bottomBlack);
g.FillPolygon(blackBrush, bottomBlack3);
// Черные вставки сбоку корпуса (полигон)
g.FillRectangle(blackBrush, _startPosX.Value + _drawingCarWidth, _startPosY.Value + 10, 10, _drawingCarHeight - 20);
// труба
if (DiselLoko.IsTube)
{
// **Труба (полигон)**
_drawingCarHeightWithKit = 20;
Point[] chimney = {
new Point(_startPosX.Value + 20, _startPosY.Value - 20),
new Point(_startPosX.Value + 35, _startPosY.Value - 20),
new Point(_startPosX.Value + 35, _startPosY.Value),
new Point(_startPosX.Value + 20, _startPosY.Value)
};
g.FillPolygon(blackBrush, chimney);
}
// отсек
if (DiselLoko.IsComportament)
{
//Топливный отсек(полигон)
Point[] fuelTank = {
new Point(_startPosX.Value + 110, _startPosY.Value + _drawingCarHeight-20), // Верхний левый угол
new Point(_startPosX.Value + 130, _startPosY.Value + _drawingCarHeight -20), // Верхний правый угол
new Point(_startPosX.Value +130 , _startPosY.Value + _drawingCarHeight-5), // Нижний правый угол
new Point(_startPosX.Value + 110, _startPosY.Value + _drawingCarHeight-5) // Нижний левый угол
};
Brush br2 = new SolidBrush(DiselLoko.ColorComportament);
g.FillPolygon(br2, fuelTank);
g.DrawPolygon(blackPen, fuelTank);
}
}
}

View File

@ -1,39 +0,0 @@
namespace PrLaba1
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Text = "Form1";
}
#endregion
}
}

View File

@ -1,10 +0,0 @@
namespace PrLaba1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
}

138
PrLaba1/PrLaba1/FormDiselLoko.Designer.cs generated Normal file
View File

@ -0,0 +1,138 @@
namespace PrLaba1
{
partial class FormDiselLoko
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormDiselLoko));
pictureBoxDiselLoko = new PictureBox();
create = new Button();
buttonUp = new Button();
buttonDown = new Button();
buttonRight = new Button();
ButtonLeft = new Button();
((System.ComponentModel.ISupportInitialize)pictureBoxDiselLoko).BeginInit();
SuspendLayout();
//
// pictureBoxDiselLoko
//
pictureBoxDiselLoko.Dock = DockStyle.Fill;
pictureBoxDiselLoko.Location = new Point(0, 0);
pictureBoxDiselLoko.Margin = new Padding(5, 6, 5, 6);
pictureBoxDiselLoko.Name = "pictureBoxDiselLoko";
pictureBoxDiselLoko.Size = new Size(1371, 900);
pictureBoxDiselLoko.TabIndex = 0;
pictureBoxDiselLoko.TabStop = false;
//
// create
//
create.Location = new Point(21, 830);
create.Margin = new Padding(5, 6, 5, 6);
create.Name = "create";
create.Size = new Size(129, 46);
create.TabIndex = 1;
create.Text = "Создать";
create.UseVisualStyleBackColor = true;
create.Click += ButtonCreate_Click;
//
// buttonUp
//
buttonUp.BackgroundImage = (Image)resources.GetObject("buttonUp.BackgroundImage");
buttonUp.BackgroundImageLayout = ImageLayout.Stretch;
buttonUp.Location = new Point(1236, 736);
buttonUp.Margin = new Padding(5, 6, 5, 6);
buttonUp.Name = "buttonUp";
buttonUp.Size = new Size(60, 70);
buttonUp.TabIndex = 2;
buttonUp.UseVisualStyleBackColor = true;
buttonUp.Click += ButtonMove_Click;
//
// buttonDown
//
buttonDown.BackgroundImage = (Image)resources.GetObject("buttonDown.BackgroundImage");
buttonDown.BackgroundImageLayout = ImageLayout.Stretch;
buttonDown.Location = new Point(1236, 806);
buttonDown.Margin = new Padding(5, 6, 5, 6);
buttonDown.Name = "buttonDown";
buttonDown.Size = new Size(60, 70);
buttonDown.TabIndex = 3;
buttonDown.UseVisualStyleBackColor = true;
buttonDown.Click += ButtonMove_Click;
//
// buttonRight
//
buttonRight.BackgroundImage = (Image)resources.GetObject("buttonRight.BackgroundImage");
buttonRight.BackgroundImageLayout = ImageLayout.Stretch;
buttonRight.Location = new Point(1291, 806);
buttonRight.Margin = new Padding(5, 6, 5, 6);
buttonRight.Name = "buttonRight";
buttonRight.Size = new Size(60, 70);
buttonRight.TabIndex = 4;
buttonRight.UseVisualStyleBackColor = true;
buttonRight.Click += ButtonMove_Click;
//
// ButtonLeft
//
ButtonLeft.BackgroundImage = (Image)resources.GetObject("ButtonLeft.BackgroundImage");
ButtonLeft.BackgroundImageLayout = ImageLayout.Stretch;
ButtonLeft.Location = new Point(1181, 806);
ButtonLeft.Margin = new Padding(5, 6, 5, 6);
ButtonLeft.Name = "ButtonLeft";
ButtonLeft.Size = new Size(60, 70);
ButtonLeft.TabIndex = 5;
ButtonLeft.TextImageRelation = TextImageRelation.TextBeforeImage;
ButtonLeft.UseVisualStyleBackColor = true;
ButtonLeft.Click += ButtonMove_Click;
//
// FormDiselLoko
//
AutoScaleDimensions = new SizeF(12F, 30F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(1371, 900);
Controls.Add(ButtonLeft);
Controls.Add(buttonRight);
Controls.Add(buttonDown);
Controls.Add(buttonUp);
Controls.Add(create);
Controls.Add(pictureBoxDiselLoko);
Margin = new Padding(5, 6, 5, 6);
Name = "FormDiselLoko";
Text = "Тепловоз";
((System.ComponentModel.ISupportInitialize)pictureBoxDiselLoko).EndInit();
ResumeLayout(false);
}
#endregion
private PictureBox pictureBoxDiselLoko;
private Button create;
private Button buttonUp;
private Button buttonDown;
private Button buttonRight;
private Button ButtonLeft;
}
}

View File

@ -0,0 +1,87 @@
namespace PrLaba1
/// <summary>
/// Форма работы с объектом "Тепловоз"
/// </summary>
{
public partial class FormDiselLoko : Form
{
/// <summary>
/// Поле-объект для прорисовки объекта
/// </summary>
private DrawningDiselLoko? _drawningDiselLoko;
/// <summary>
/// Метод прорисовки машины
/// </summary>
private void Draw()
{
if (_drawningDiselLoko == null)
{
return;
}
Bitmap bmp = new(pictureBoxDiselLoko.Width, pictureBoxDiselLoko.Height);
Graphics gr = Graphics.FromImage(bmp);
_drawningDiselLoko.DrawTransport(gr);
pictureBoxDiselLoko.Image = bmp;
}
/// <summary>
/// Конструктор формы
/// </summary>
public FormDiselLoko()
{
InitializeComponent();
}
/// <summary>
/// Кнопка создать
/// </summary>
private void ButtonCreate_Click(object sender, EventArgs e)
{
Random random = new Random();
_drawningDiselLoko = new DrawningDiselLoko();
_drawningDiselLoko.Init(random.Next(100, 300), random.Next(1000, 3000),
Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)),
Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)),
Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)));
_drawningDiselLoko.SetPictureSize(pictureBoxDiselLoko.Width, pictureBoxDiselLoko.Height);
_drawningDiselLoko.SetPosition(random.Next(10, 100), random.Next(10, 100));
Draw();
}
/// <summary>
/// Кнопки движения
/// </summary>
private void ButtonMove_Click(object sender, EventArgs e)
{
if (_drawningDiselLoko == null)
{
return;
}
string name = ((Button)sender)?.Name ?? string.Empty;
bool result = false;
switch (name)
{
case "buttonUp":
result = _drawningDiselLoko.MoveTransport(Direction.Up);
break;
case "buttonDown":
result = _drawningDiselLoko.MoveTransport(Direction.Down);
break;
case "ButtonLeft":
result = _drawningDiselLoko.MoveTransport(Direction.Left);
break;
case "buttonRight":
result = _drawningDiselLoko.MoveTransport(Direction.Right);
break;
}
if (result)
{
Draw();
}
}
}
}

View File

@ -0,0 +1,155 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="buttonUp.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAIAAAC0Ujn1AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vwAADr8BOAVTJAAAAKxJREFUSEvdzEsOwjAUQ9Hsf9MgBRU5N+/jQjvpmSV+9njdZvDjOo+fHhN/c+7p
Z/fUunWnu/56f8TViUeR/oirB95tmgvurXi96uISr1dVzKUIOyLNuJFgTaQZN3JsHuKA7Q77U/J7EvtT
8Muehyv7NBs27Fw5va9v7z9wCu+f17kSTn+xHWFHlJmBHVFmBnZEmRnYEWVmYEeUmYEdUWYGdkSZGdgR
ZWZgR7wBm1XCkmZMrk8AAAAASUVORK5CYII=
</value>
</data>
<data name="buttonDown.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAIAAAC0Ujn1AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vwAADr8BOAVTJAAAAKZJREFUSEvtzEEOwzAMA8H8/9MtECAFs5ZoKrl2bjZFHp/eEWBH2CzAjrBZgB1h
swA7wmYBdoTNAuwImwXYETYLsCNsFmBHFBnbGa6s02xMcIrvFziF95t17uD9eJor5fSDdfZPze8Q+6f6
d7TO5qUN8nXWLm0QTrMjXLZd5/XdLrZ4fbeJzTrvFvuLbp1Hi/1FOc2LSnSEdWaN9O63zt/e4HTqPw1f
0c/CkmqWjm8AAAAASUVORK5CYII=
</value>
</data>
<data name="buttonRight.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAIAAAC0Ujn1AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vwAADr8BOAVTJAAAAIRJREFUSEvtzEEKwCAMBVHvf+kWFEuY1BjTuCj4lvoz5dqm8CHPScMkXTp+OFg3
TzdWtw6Qbjgas6asCpy+4Y0fSwoPVrEncBrDasVRGMOJaV3n90c/TMtuZhrdnDSTHXer2BM49WNJsRaM
ddwNWDsmK47GrGk42kwOYtEmeOZx0rAxfQP0JcKSXR+eRgAAAABJRU5ErkJggg==
</value>
</data>
<data name="ButtonLeft.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAIAAAC0Ujn1AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vwAADr8BOAVTJAAAAIVJREFUSEvtzEkOwCAMBEH+/+lEwiIaGmT2nKgjYzo8xwQ+7HPTMJkOEV9zjblk
0Q9n4W2AqOGR8DbFZMI74W2GsX4sCZ6OYi/h3QQmt0TNqS7S3Bb9lN5cR3pnneGIR3NYFTwdxV6BH/qx
VMM/gqfC24DViEfC26oOprXOIdeYV9w0HEy/eP/CkookNBkAAAAASUVORK5CYII=
</value>
</data>
</root>

View File

@ -8,4 +8,23 @@
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Folder Include="д\" />
</ItemGroup>
</Project>

View File

@ -3,15 +3,13 @@ namespace PrLaba1
internal static class Program
{
/// <summary>
/// The main entry point for the application.
/// Âõîä â ïðîãðàììó
/// </summary>
[STAThread]
static void Main()
{
// To customize application configuration such as set high DPI settings or default font,
// see https://aka.ms/applicationconfiguration.
ApplicationConfiguration.Initialize();
Application.Run(new Form1());
Application.Run(new FormDiselLoko());
}
}
}

View File

@ -0,0 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.42000
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
namespace PrLaba1.Properties {
using System;
/// <summary>
/// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
/// </summary>
// Этот класс создан автоматически классом StronglyTypedResourceBuilder
// с помощью такого средства, как ResGen или Visual Studio.
// Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
// с параметром /str или перестройте свой проект VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PrLaba1.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Перезаписывает свойство CurrentUICulture текущего потока для всех
/// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}