
- •VStepanov.CourseWork.First Common.Cs
- •VStepanov.CourseWork.First.Binary BmpInfo.Cs
- •ByteMixer.Cs
- •Relocator.Cs
- •VStepanov.CourseWork.First.Cryptography
- •XorCodec.Cs
- •VStepanov.CourseWork.First.Steganography Steganogram.Cs
- •SteganogramBmp.Cs
- •SteganogramInfo.Cs
- •SteganogramMessage.Cs
- •VStepanov.CourseWork.First.Gui AnimatedForm.Cs
- •FileAddForm.Cs
- •GuiMethods.Cs
- •PasswordRequest.Cs
- •Program.Cs
- •SplashForm.Cs
- •TextAddForm.Cs
- •TextReadForm.Cs
- •Лист регистрации изменений
TextAddForm.Cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using VStepanov.CourseWork.First;
using VStepanov.CourseWork.First.Steganography;
namespace VStepanov.CourseWork.First.Gui
{
/// <summary>
/// Форма, предоставляющая интерфейс для добавления текста в контейнер.
/// </summary>
public partial class TextAddForm : Form
{
#region Поля
/// <summary>
/// Стеганограмма, обрабатываемая в данный момент.
/// </summary>
public Steganogram Steganogram { get; private set; }
#endregion
#region Конструкторы
/// <summary>
/// Конструктор формы добавления текста.
/// </summary>
/// <param name="steganogram">Стеганограмма, в которую будет проводиться запись.</param>
public TextAddForm(Steganogram steganogram)
{
InitializeComponent();
Steganogram = steganogram;
if (steganogram.Info.HasValue)
{
trackBarBits.Value = steganogram.Info.Value.nLastBitsUsing;
}
else
{
trackBarBits.Value = 2;
}
this.Text = Steganogram.ContainerFile.Name;
}
/// <summary>
/// Конструктор формы добавления текста с исходным заданным текстом.
/// </summary>
/// <param name="steganogram">Стеганограмма, в которую будет проводиться запись.</param>
/// <param name="content">Исходный текст.</param>
public TextAddForm(Steganogram steganogram, string content)
: this(steganogram)
{
textBoxContent.Text = content;
}
#endregion
#region Обработчики событий
/// <summary>
/// Обработчик нажатия на кнопку записи.
/// </summary>
private void buttonWrite_Click(object sender, EventArgs e)
{
(Program.MainForm.CurrentForm as AnimatedForm).ContainerWatcher.EnableRaisingEvents = false;
SteganogramMessage message;
SteganogramInfo info;
if (textBoxPassword.Text != String.Empty)
{
message = SteganogramMessage.FromString(textBoxContent.Text, textBoxPassword.Text);
}
else
{
message = SteganogramMessage.FromString(textBoxContent.Text);
}
info = new SteganogramInfo(message, trackBarBits.Value);
Steganogram.WriteSteganogramToFile(info, message);
this.Hide();
this.Close();
MessageBox.Show("Сообщение записано в контейнер.\nОбновлённый контейнер находится по прежнему адресу.\n\nИзображение-контейнер готово для передачи.");
(Program.MainForm.CurrentForm as AnimatedForm).ContainerWatcher.EnableRaisingEvents = true;
}
/// <summary>
/// Обработчик изменения значения переключателя числа последних бит.
/// </summary>
private void trackBarBits_ValueChanged(object sender, EventArgs e)
{
int limit = Steganogram.GetMessageMaxLength(trackBarBits.Value);
string ending = String.Empty;
if (limit % 10 < 5 && limit % 10 != 1)
{
if ((limit % 100 > 10 && limit % 100 < 20) || limit % 10 == 0)
{
ending = "ов";
}
else
{
ending = "а";
}
}
else if (limit >= 5)
{
ending = "ов";
}
labelSizeLimit.Text = String.Format("Возможно записать\nсообщение, длинной не более,\nчем {0} символ{1}.", limit, ending);
textBoxContent.MaxLength = limit > 0 ? limit : 0;
}
#endregion
}
}