Lab1 WarmlyShip Barsukov final

This commit is contained in:
frog24 2023-10-06 03:13:36 +04:00
parent cedd002a0f
commit 055a2f3bda
11 changed files with 819 additions and 0 deletions

View File

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.33627.172
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectWarmlyShip", "ProjectWarmlyShip\ProjectWarmlyShip.csproj", "{D1F03A6D-14AA-406C-94BB-CB5E055E7830}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D1F03A6D-14AA-406C-94BB-CB5E055E7830}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D1F03A6D-14AA-406C-94BB-CB5E055E7830}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D1F03A6D-14AA-406C-94BB-CB5E055E7830}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D1F03A6D-14AA-406C-94BB-CB5E055E7830}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {47092368-4841-45BC-8FA6-9653B7B37C6E}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProjectWarmlyShip
{
public enum DirectionType
{
Up = 1,
Down = 2,
Left = 3,
Right = 4,
}
}

View File

@ -0,0 +1,133 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProjectWarmlyShip
{
public class DrawingWarmlyShip
{
public EntityWarmlyShip? EntityWarmlyShip { get; private set; }
private int _pictureWidth;
private int _pictureHeight;
private int _startPosX;
private int _startPosY;
private readonly int _shipWidth = 100;
private readonly int _shipHeight = 70;
public bool Init(int speed, double weight, Color mainColor, Color optionalColor,
bool pipes, bool fuelCompartment, int width, int height)
{
/// <summary>
/// проверка, что размеры формы больше или равны размерам рисуемого объекта
/// </summary>
if (width < _shipWidth || height < _shipHeight)
{
return false;
}
_pictureWidth = width;
_pictureHeight = height;
EntityWarmlyShip = new EntityWarmlyShip();
EntityWarmlyShip.Init(speed, weight, mainColor, optionalColor, pipes, fuelCompartment);
return true;
}
public void SetPosition(int x, int y)
{
/// <summary>
/// Проверка, что x и y не выходят за пределы формы
/// </summary>
if (x < 0 || x + _shipWidth > _pictureWidth)
{
x = 20;
}
if (y < 0 || y + _shipHeight > _pictureHeight)
{
y = 20;
}
_startPosX = x;
_startPosY = y;
}
public void MoveTransport(DirectionType direction)
{
if (EntityWarmlyShip == null)
{
return;
}
switch (direction)
{
case DirectionType.Left:
if (_startPosX - EntityWarmlyShip.Step > 0)
{
_startPosX -= (int)EntityWarmlyShip.Step;
}
break;
case DirectionType.Up:
if (_startPosY - EntityWarmlyShip.Step > 0)
{
_startPosY -= (int)EntityWarmlyShip.Step;
}
break;
case DirectionType.Right:
if (_startPosX + EntityWarmlyShip.Step + _shipWidth < _pictureWidth)
{
_startPosX += (int)EntityWarmlyShip.Step;
}
break;
case DirectionType.Down:
if (_startPosY + EntityWarmlyShip.Step + _shipHeight < _pictureHeight)
{
_startPosY += (int)EntityWarmlyShip.Step;
}
break;
}
}
public void DrawTransport(Graphics g)
{
if (EntityWarmlyShip == null)
{
return;
}
Pen pen = new(Color.Black);
Brush optionalBrush = new SolidBrush(EntityWarmlyShip.OptionalColor);
if (EntityWarmlyShip.Pipes)
{
g.FillRectangle(optionalBrush, _startPosX + 70, _startPosY, 10, 30);
g.FillRectangle(optionalBrush, _startPosX + 50, _startPosY + 10, 10, 20);
g.DrawRectangle(pen, _startPosX + 50, _startPosY + 10, 10, 20);
g.DrawRectangle(pen, _startPosX + 70, _startPosY, 10, 30);
}
if (EntityWarmlyShip.FuelCompartment)
{
g.FillRectangle(optionalBrush, _startPosX + 10, _startPosY + 30, 10, 10);
g.DrawRectangle(pen, _startPosX + 10, _startPosY + 30, 10, 10);
}
Brush mainBrush = new SolidBrush(EntityWarmlyShip.MainColor);
//палуба
g.FillRectangle(mainBrush, _startPosX + 30, _startPosY + 30, 60, 10);
g.DrawRectangle(pen, _startPosX + 30, _startPosY + 30, 60, 10);
//корпус
g.FillPolygon(mainBrush, new Point[]
{
new Point(_startPosX, _startPosY + 40),
new Point(_startPosX + 100, _startPosY + 40),
new Point(_startPosX + 90, _startPosY + 60),
new Point(_startPosX + 20, _startPosY + 60),
new Point(_startPosX, _startPosY + 40),
}
);
g.DrawPolygon(pen, new Point[]
{
new Point(_startPosX, _startPosY + 40),
new Point(_startPosX + 100, _startPosY + 40),
new Point(_startPosX + 90, _startPosY + 60),
new Point(_startPosX + 20, _startPosY + 60),
new Point(_startPosX, _startPosY + 40),
}
);
//якорь
g.DrawLine(pen, _startPosX + 25, _startPosY + 45, _startPosX + 25, _startPosY + 55);
g.DrawLine(pen, _startPosX + 20, _startPosY + 50, _startPosX + 30, _startPosY + 50);
g.DrawLine(pen, _startPosX + 23, _startPosY + 55, _startPosX + 27, _startPosY + 55);
}
}
}

View File

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProjectWarmlyShip
{
public class EntityWarmlyShip
{
public int Speed { get; private set; }
public double Weight { get; private set; }
public Color MainColor { get; private set; }
public Color OptionalColor { get; private set; }
public bool Pipes { get; private set; }
public bool FuelCompartment { get; private set; }
public double Step => (double)Speed * 100 / Weight;
public void Init(int speed, double weight, Color mainColor, Color optionalColor, bool pipes, bool fuelCompartment)
{
Speed = speed;
Weight = weight;
MainColor = mainColor;
OptionalColor = optionalColor;
Pipes = pipes;
FuelCompartment = fuelCompartment;
}
}
}

View File

@ -0,0 +1,138 @@
namespace ProjectWarmlyShip
{
partial class WarmlyShipForm
{
/// <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(WarmlyShipForm));
pictureBoxWarmlyShip = new PictureBox();
buttonCreate = new Button();
buttonUp = new Button();
buttonDown = new Button();
buttonLeft = new Button();
buttonRight = new Button();
((System.ComponentModel.ISupportInitialize)pictureBoxWarmlyShip).BeginInit();
SuspendLayout();
//
// pictureBoxWarmlyShip
//
pictureBoxWarmlyShip.Dock = DockStyle.Fill;
pictureBoxWarmlyShip.Location = new Point(0, 0);
pictureBoxWarmlyShip.Name = "pictureBoxWarmlyShip";
pictureBoxWarmlyShip.Size = new Size(884, 461);
pictureBoxWarmlyShip.SizeMode = PictureBoxSizeMode.AutoSize;
pictureBoxWarmlyShip.TabIndex = 0;
pictureBoxWarmlyShip.TabStop = false;
//
// buttonCreate
//
buttonCreate.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
buttonCreate.Location = new Point(12, 426);
buttonCreate.Name = "buttonCreate";
buttonCreate.Size = new Size(75, 23);
buttonCreate.TabIndex = 1;
buttonCreate.Text = "Create";
buttonCreate.UseVisualStyleBackColor = true;
buttonCreate.Click += ButtonCreateWarmlyShip;
//
// buttonUp
//
buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
buttonUp.BackgroundImage = (Image)resources.GetObject("buttonUp.BackgroundImage");
buttonUp.BackgroundImageLayout = ImageLayout.Zoom;
buttonUp.Location = new Point(806, 383);
buttonUp.Name = "buttonUp";
buttonUp.Size = new Size(30, 30);
buttonUp.TabIndex = 2;
buttonUp.UseVisualStyleBackColor = true;
buttonUp.Click += buttonMove_Click;
//
// buttonDown
//
buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
buttonDown.BackgroundImage = (Image)resources.GetObject("buttonDown.BackgroundImage");
buttonDown.BackgroundImageLayout = ImageLayout.Zoom;
buttonDown.Location = new Point(806, 419);
buttonDown.Name = "buttonDown";
buttonDown.Size = new Size(30, 30);
buttonDown.TabIndex = 3;
buttonDown.UseVisualStyleBackColor = true;
buttonDown.Click += buttonMove_Click;
//
// buttonLeft
//
buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
buttonLeft.BackgroundImage = (Image)resources.GetObject("buttonLeft.BackgroundImage");
buttonLeft.BackgroundImageLayout = ImageLayout.Zoom;
buttonLeft.Location = new Point(770, 419);
buttonLeft.Name = "buttonLeft";
buttonLeft.Size = new Size(30, 30);
buttonLeft.TabIndex = 4;
buttonLeft.UseVisualStyleBackColor = true;
buttonLeft.Click += buttonMove_Click;
//
// buttonRight
//
buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
buttonRight.BackgroundImage = (Image)resources.GetObject("buttonRight.BackgroundImage");
buttonRight.BackgroundImageLayout = ImageLayout.Zoom;
buttonRight.Location = new Point(842, 419);
buttonRight.Name = "buttonRight";
buttonRight.Size = new Size(30, 30);
buttonRight.TabIndex = 5;
buttonRight.UseVisualStyleBackColor = true;
buttonRight.Click += buttonMove_Click;
//
// WarmlyShipForm
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(884, 461);
Controls.Add(buttonRight);
Controls.Add(buttonLeft);
Controls.Add(buttonDown);
Controls.Add(buttonUp);
Controls.Add(buttonCreate);
Controls.Add(pictureBoxWarmlyShip);
Name = "WarmlyShipForm";
StartPosition = FormStartPosition.CenterScreen;
Text = "WarmlyShip";
((System.ComponentModel.ISupportInitialize)pictureBoxWarmlyShip).EndInit();
ResumeLayout(false);
PerformLayout();
}
#endregion
private PictureBox pictureBoxWarmlyShip;
private Button buttonCreate;
private Button buttonUp;
private Button buttonDown;
private Button buttonLeft;
private Button buttonRight;
}
}

View File

@ -0,0 +1,63 @@
namespace ProjectWarmlyShip
{
public partial class WarmlyShipForm : Form
{
private DrawingWarmlyShip? _drawingWarmlyShip;
public WarmlyShipForm()
{
InitializeComponent();
}
private void Draw()
{
if (_drawingWarmlyShip == null)
{
return;
}
Bitmap bmp = new(pictureBoxWarmlyShip.Width, pictureBoxWarmlyShip.Height);
Graphics gr = Graphics.FromImage(bmp);
_drawingWarmlyShip.DrawTransport(gr);
pictureBoxWarmlyShip.Image = bmp;
}
private void ButtonCreateWarmlyShip(object sender, EventArgs e)
{
Random rnd = new Random();
_drawingWarmlyShip = new DrawingWarmlyShip();
_drawingWarmlyShip.Init(
rnd.Next(100, 300),
rnd.Next(1000, 3000),
Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256)),
Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256)),
Convert.ToBoolean(rnd.Next(0, 2)),
Convert.ToBoolean(rnd.Next(0, 2)),
pictureBoxWarmlyShip.Width,
pictureBoxWarmlyShip.Height
);
_drawingWarmlyShip.SetPosition(rnd.Next(10, 100), rnd.Next(10, 100));
Draw();
}
private void buttonMove_Click(object sender, EventArgs e)
{
if (_drawingWarmlyShip == null)
{
return;
}
string name = ((Button)sender)?.Name ?? string.Empty;
switch (name)
{
case "buttonUp":
_drawingWarmlyShip.MoveTransport(DirectionType.Up);
break;
case "buttonDown":
_drawingWarmlyShip.MoveTransport(DirectionType.Down);
break;
case "buttonLeft":
_drawingWarmlyShip.MoveTransport(DirectionType.Left);
break;
case "buttonRight":
_drawingWarmlyShip.MoveTransport(DirectionType.Right);
break;
}
Draw();
}
}
}

View File

@ -0,0 +1,190 @@
<root>
<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>
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
</value>
</data>
<data name="buttonDown.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
+KJCov8BQ5Y+JWMlh+YAAAAASUVORK5CYII=
</value>
</data>
<data name="buttonLeft.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="buttonRight.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAWgAAAFBBAMAAACoaCgYAAAABGdBTUEAALGPC/xhBQAAABJQTFRF7u7u
AAAA////e3t7tra2Q0ND8EOVeQAABUxJREFUeNrt3WGK3SAQwHHxBBH1u9jtBXIET/DI/Q/TqGO6bdnu
y3vR5A8ZCo/XgvsjZRlnkjgq1giqxpFfP3SnlXuif05A9A+jiWhHRJtERFsi2sxEtCWizUJE+whEmykA
0UYT0S4A0SYR0a78Lh6JltDy90d+beg1wxy88gj0msx5aLMQ0Z6Izpeah15rGCB6IqIlw8DQksxZaDMH
INpGIFouNQxdaxgYupaLNLTXR60snz33058yDKcI+JRhiGhHRK+XGoi2RHRL5iz0IV2y0eitIYlCew1E
t4YkCy0NSRi61jAwdC0XaejSkKShS4Z5Cy0xYj+9hY2cIuB3LES0J6LXSw1Et1teLHS7u4hCt4YkC11v
ecHQB3TJTkDXhiQMXS81DV3KRRraPAIQnTMMD71mmNdWls+h++ktEqgI2MIR0SYR0TYC0VtDEoVuDUkU
ujUkWWivgWipYWDoF7pkF0CXhiQNXS41Dp0zDA6dMwwPbXduNlucsp/eYgEVAVt4IrqUizh0a0iy0PLY
HgstDUkY2kUg+oUu2QXQNgLRpYbBoXOGwaFzhuGh1wwDRLsARJv05Mryeep++tOlfmrla6G3hiQK3RqS
KHRrSLLQUsOw0FLDwNC1Ifkcuke8hK4NyW/QHeM19BNdMmUuFznD4NA5w/DQ33bJroheMwwQbSMQXV7Z
xqH9N10yc8mYAhAtDUkYutYwMHRtSNLQLgLRpYbBoW0EonNDkodey0Ueei0XgWijiWgXgej8yjYP7Yjo
L7pkF0fbCETLpYaha0MShq5PSNLQpYbBoacAROcahod2AYg2KQDR/3TJCOh6hiQN7Yno1pBkoT0RLQ1J
yH56C01EuwBEl4YkDv1Hl8xQYg5AtI1A9FrDANE+AtHmEYFoQ7zS5QxJHLo1JFloR0RLDQNDS0PSsKI2
JA0rakPSwKI8IWlooYnoXC4aXCQiei0XDS8SEW1v9KBI9y/imEh3chkTGreflhlNhhUeWLnI3DGDCnsX
tmPC3c2aMTHdDcgxQWz1IpvqxNsXyBtFxFtyn+etc24zA9ElgdPQGoiuCfx+HKh7EB+8Qj7iRnyYEPnY
JvEBWeSjyOl+vH5IeOKLDCWviJWyn655BYaegWjJKyz0DEQjX6Ikvq7aGo73K9idg/iyO/JYAeIBDsij
MoiHkiCPfyl5BXXiVUvgMLQGoh+Rh/67D4ZAE4+eQx7yRzxOEXlwJfGI0CcOY439ot+xt+27VuXPkV/7
HTD8/39+62v3o5wvg37q0GyJa8wJ2BL4Uz/oMugZiLYRiJ6B6C8PyLsyOmkeeiKORiEOoSGO+0EOViKO
sEIOCyOOZUMOwNs1alA+z95Puz0rXwWtgehH5KG9BqKXwEPvHnN8BTRxoDRydDdxSDpyHD1x8P8UeGiZ
7MNCL4GHbjPd96ElztpPz2/8oLPQ2x1DEjoB0TtHBF8DnRQPPQUgWiseOt/IoqF9VDz0/j7Y+WgbFQ9d
D0ZkoWvDEYZOioeW+Zgvriyfo/fT+p2VT0I/Ag/t3/sfPge9BB56dx/sCuicV2jokldo6KR46DoMGIbW
ioeWBI5Ct1HiKLQ0HFHo1nBEoecjVm4xaD9t44E/aBQ6BR7aBcVDJ8VD57xCQ5e8QkOXvAJD17wCQ7/f
BxuPllEsLLQkcBTaBcVDJ8VDTxGI1oeuLJ+d99OPcOTKY9A5r+DQOYHT0CWv0NAlr8DQ9UYWDJ2OXnkA
WhI4C60VD93uGJLQh/TBRqOXwEPbCETPQLTtsnKLTvvpFLqs3BWd8woOnRQPXfIKDP2hFQ/d6WuMvwDc
1kR5ZctAogAAAABJRU5ErkJggg==
</value>
</data>
</root>

View File

@ -0,0 +1,17 @@
namespace ProjectWarmlyShip
{
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 WarmlyShipForm());
}
}
}

View File

@ -0,0 +1,26 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<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>
</Project>

View File

@ -0,0 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.42000
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
namespace ProjectWarmlyShip.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("ProjectWarmlyShip.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;
}
}
}
}

View File

@ -0,0 +1,120 @@
<?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>
</root>