- •Содержание
- •Введение
- •Постановка задачи
- •Теоретическое исследование
- •Представление изображений в эвм. Форматы изображений
- •Общие положения о защите авторского права и водяных знаках
- •Методы внедрения водяных знаков в изображения
- •Метод микширования
- •Метод нанесения текста
- •Метод lsb
- •Метод Patchwork
- •Обзор существующих программ-аналогов
- •Tsr Watermark Image 1.9.6.4
- •ImageSpyer 1.1
- •Разработка схемы алгоритма и её описание
- •Общая схема работы программы
- •Описание работы класса wmParameters
- •Описание работы класса TextParameters
- •Описание работы класса lsbInjector
- •Описание работы класса PatchworkInjector
- •Разработка программы
- •Тестирование и отладка
- •Руководство пользователя
- •Описание менюFile
- •Описание интерфейса метода микширования
- •Описание интерфейса метода нанесения текста
- •Описание интерфейса методовLsBиPatchwork
- •Заключение
- •Список использованных источников
- •Приложение а. Диаграмма классов приложения watermark injector
- •Приложение б. Исходный текст классаmainform
- •Приложение в. Исходный текст класса wmparameters
- •Приложение г. Исходный текст класса textparameters
- •Приложение д. Исходный текст классаlsbinjector
- •Приложение д. Исходный текст классаpatchworkinjector
Приложение г. Исходный текст класса textparameters
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WatermarkInjector
{
public partial class TextParameters : Form
{
private string textforInj;
private Font _font;
private double transparencyRatio, HwatermarkSize, VwatermarkSize, rotationAngle;
private WMParameters.HrAlignment _HA;
private WMParameters.VrAlignment _VA;
private bool brd;
private Color txtCol, brdCol;
public string txtInj { get { return textforInj; } }
public Font font { get { return _font; } }
public double TR { get { return transparencyRatio; } }
public double HWS { get { return HwatermarkSize; } }
public double VWS { get { return VwatermarkSize; } }
public double RA { get { return rotationAngle; } }
public WMParameters.HrAlignment HA { get { return _HA; } }
public WMParameters.VrAlignment VA { get { return _VA; } }
public bool isBorder { get { return brd; } }
public Color textCol { get { return txtCol; } }
public Color bordCol { get { return brdCol; } }
public TextParameters()
{
InitializeComponent();
button2.DialogResult = DialogResult.OK;
button3.DialogResult = DialogResult.Cancel;
}
private void button1_Click(object sender, EventArgs e)
{
if (fontDialog1.ShowDialog() == DialogResult.OK)
textBox2.Text = fontDialog1.Font.Name;
numericUpDown1.Value = Convert.ToInt16(fontDialog1.Font.Size);
checkBox1.Checked = fontDialog1.Font.Bold;
checkBox2.Checked = fontDialog1.Font.Italic;
checkBox3.Checked = fontDialog1.Font.Underline;
checkBox5.Checked = fontDialog1.Font.Strikeout;
if (fontDialog1.Font.Size < 95)
MessageBox.Show("Watermark with such font size will be injected with distortions.\n\nPlease,increase the size...");
}
private void button4_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
label9.ForeColor = colorDialog1.Color;
}
private void button5_Click(object sender, EventArgs e)
{
if (colorDialog2.ShowDialog() == DialogResult.OK)
label10.ForeColor = colorDialog2.Color;
}
private void checkBox4_Click(object sender, EventArgs e)
{
if (!checkBox4.Checked)
{
button5.Enabled = false;
label10.Enabled = false;
}
else
{
button5.Enabled = true;
label10.Enabled = true;
}
}
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
label4.Text = "Center left";
}
private void radioButton3_CheckedChanged(object sender, EventArgs e)
{
label4.Text = "Lower left";
}
private void radioButton4_CheckedChanged(object sender, EventArgs e)
{
label4.Text = "Upper middle";
}
private void radioButton5_CheckedChanged(object sender, EventArgs e)
{
label4.Text = "Center";
}
private void radioButton6_CheckedChanged(object sender, EventArgs e)
{
label4.Text = "Lower middle";
}
private void radioButton7_CheckedChanged(object sender, EventArgs e)
{
label4.Text = "Upper right";
}
private void radioButton8_CheckedChanged(object sender, EventArgs e)
{
label4.Text = "Center right";
}
private void radioButton9_CheckedChanged(object sender, EventArgs e)
{
label4.Text = "Lower right";
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
label7.Text = Convert.ToString(trackBar1.Value) + '%';
}
private void trackBar2_Scroll(object sender, EventArgs e)
{
label8.Text = Convert.ToString(trackBar2.Value) + '%';
}
private void button2_Click(object sender, EventArgs e)
{
FontStyle fntSt = FontStyle.Regular;
textforInj = textBox1.Text;
if (checkBox1.Checked) fntSt |= FontStyle.Bold;
if (checkBox2.Checked) fntSt |= FontStyle.Italic;
if (checkBox3.Checked) fntSt |= FontStyle.Underline;
if (checkBox5.Checked) fntSt |= FontStyle.Strikeout;
_font = new Font(fontDialog1.Font, fntSt);
transparencyRatio = (float)trackBar1.Value / 100;
HwatermarkSize = (float)trackBar2.Value / 100;
VwatermarkSize = (float)trackBar4.Value / 100;
rotationAngle = trackBar3.Value;
if ((radioButton1.Checked) || (radioButton4.Checked) || (radioButton7.Checked))
_VA = WMParameters.VrAlignment.Upper;
else if ((radioButton2.Checked) || (radioButton5.Checked) || (radioButton8.Checked))
_VA = WMParameters.VrAlignment.Center;
else if ((radioButton3.Checked) || (radioButton6.Checked) || (radioButton9.Checked))
_VA = WMParameters.VrAlignment.Lower;
if ((radioButton1.Checked) || (radioButton2.Checked) || (radioButton3.Checked))
_HA = WMParameters.HrAlignment.Left;
else if ((radioButton4.Checked) || (radioButton5.Checked) || (radioButton6.Checked))
_HA = WMParameters.HrAlignment.Middle;
else if ((radioButton7.Checked) || (radioButton8.Checked) || (radioButton9.Checked))
_HA = WMParameters.HrAlignment.Right;
brd = checkBox4.Checked;
brdCol = label10.ForeColor;
txtCol = label9.ForeColor;
}
private void trackBar3_Scroll(object sender, EventArgs e)
{
label12.Text = Convert.ToString(trackBar3.Value) + '°';
}
private void trackBar4_Scroll(object sender, EventArgs e)
{
label14.Text = Convert.ToString(trackBar4.Value) + '%';
}
}
}