Скачать .docx |
Курсовая работа: Разработка ПО графического редактора
МИНСКИЙ ИНСТИТУТ УПРАВЛЕНИЯ
Факультет Учётно-Финансовый «К защите допускаю»
Кафедра АИС Демидович Е.М.
«» ____________2011 г.
КУРСОВАЯ РАБОТА
по дисциплине
«Визуальные средства разработки программных приложений»
на тему «Разработка ПО графического редактора»
Выполнил студент гр. 81101 ФИО Мороз В.А.
специальность ИСиТ (в экономике)
Руководитель _________________________ Демидович Е.М.
МИНСК 2011г.
Курсовая работа
Студент гр.81101 Мороз В.А.
« Разработка программного обеспечения графического редактора»
Объем работы 27 страниц.
Ключевые слова: класс Form1,generic, внешний класс, внешний метод, замыкания, делегаты, локальные переменные.****
В курсовой работе описана разработка программы для работы с графическими файлами, используя язык программирования высокого уровня С# на платформе .NET, включая следующее аспекты: ****
1. Загрузка медиафайлов в поток
2. Использование событий MenuItem
3. Использование PictureBox
4. Работа с изображением загруженным в PictureBox
5. Использование библиотеки Drawing.Printing.PrintDocument
6. Использование статистических методов
МИНСКИЙ ИНСТИТУТ УПРАВЛЕНИЯ
Факультет: Учётно-Финансовый
Специальность: Информационные системы и технологии (в экономике)
УТВЕРЖДАЮ
Зав. кафедрой
_______________Курмашев В.И.
“___”_____________2011 года
ЗАДАНИЕ
на курсовой проект
по дисциплине «Визуальная средства разработки программных приложений»
студента Мороза В.А.
1. Тема: «Разработкапрограммного обеспечения графического редактора».
2. Срок сдачи студентом законченной курсовой работы.
3. Исходные данные: создать визуальное программное приложение для работы с графическими файлами; создать интерфейс для удобства взаимодействия пользователя и программы.
4. Перечень подлежащих разработке вопросов и календарный график
№ п/п | Наименование вопросов курсовой работы | Срок исполнения |
1 | Подбор литературы | |
2 | Ознакомление с литературой | |
3 | Системное проектирование | |
4 | Функциональное проектирование | |
5 | Оформление курсовой работы |
Руководитель ______________________________________Демидович Е.М.
Задание принял к исполнению______________________________________
(подпись)
ОГЛАВЛЕНИЕ
1.ФУНКЦИОНАЛЬНОЕ ПРОЕКТИРОВАНИЕ.. 7
1.1. Разработка алгоритма работы приложения. 7
1.2. Разработка структуры приложения и структуры данных. 8
1.3. Разработка программного кода приложения. 9
1.4. Результат выполнения приложения. 11
1.5. Инструкция по использованию программы.. 13
1.5.1. Загрузка графического файла . 13
1.5.2. Вывод графического файла на печать. 13
1.5.3. Изменение параметров страниц. 13
1.5.4. Сохранение графического файла. 14
1.5.5. Редактирования графического файла . 14
1.5.6. Выход из программы .. 14
Цель данной курсовой работы: разработка программы для работы с графическими файлами, используя язык программирования высокого уровня С# на платформе .NET.
В программе будут реализованы следующие функции:
1. Открывать графический файл.
2. Сохранять графический файл.
3. Вывод на печать.
4. Изменение страницы печати.
5. Изменение размеров графического файла.
Использование новых информационных технологий в разных сферах деятельности человека привело к разработке программного обеспечения для создания графических объектов(файлов) и дальнейшей работы с ними. Такое программное обеспечение было востребовано на рынке информационных технологий, потому постоянно изменяется, включая в себя всё новые и новые возможности.
Язык С# помогает создавать большие программные проекты, которые в будущем могут приносить отличную прибыль. Первые шаги программирования на языке С#, требуют тщательного проектирования макета программы, а также наличия литературы по данному языку программирования. Однако, при внимательном изучении литературы, можно добиться хороших познаний данного языка программирования и создавать достаточно хорошее программное обеспечение для разных сфер деятельности.
1. ФУНКЦИОНАЛЬНОЕ ПРОЕКТИРОВАНИЕ
1.1. Разработка алгоритма работы приложения
Алгоритм работы создаваемого приложения выглядит следующим образом.
1.2. Разработка структуры приложения и структуры данных
Для упрошённой работы реализовано меню, предназначенное для улучшения работы пользователя на персональном компьютере.
Структура меню имеет следующий вид:
1.3. Разработка программного кода приложения
Язык программирования С# в настоящее время считается основным языком, используемым для разработки коммерческих программных продуктов. Он является языком общего назначения. Естественная для него область применения – системное программирование, реализуемое во всех возможных вариантах. Кроме того, С# успешно используется во многих областях приложения, далеко выходящих за указанные рамки. Программное обеспечение написанное на С# в настоящее время используется на всех компьютерах, начиная с самых скромных микрокомпьютеров – до самых больших супер-ЭВМ.
В разрабатываемой программе используется класс Form1:
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.MainMenu mainMenu1;
private System.Windows.Forms.MenuItem menuFile;
private System.Windows.Forms.MenuItem menuOpen;
private System.Windows.Forms.MenuItem menuSave;
private System.Windows.Forms.MenuItem menuItem1;
private System.Windows.Forms.MenuItem menuPageSetup;
private System.Windows.Forms.MenuItem menuPreview;
private System.Windows.Forms.MenuItem menuPrint;
private System.Windows.Forms.MenuItem menuItem5;
private System.Windows.Forms.MenuItem menuExit;
private System.Windows.Forms.MenuItem menuView;
private System.Windows.Forms.MenuItem menuResize;
private System.Windows.Forms.OpenFileDialog openFileDialog1;
private System.Windows.Forms.SaveFileDialog saveFileDialog1;
private System.Windows.Forms.ContextMenu contextMenu1;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.MenuItem menuBase;
private System.Windows.Forms.MenuItem menuCenterImage;
private System.Windows.Forms.MenuItem menuAutoSize;
private System.Windows.Forms.MenuItem cmenuResize;
private System.Windows.Forms.MenuItem cmenuBase;
private System.Windows.Forms.MenuItem cmenuCenterImage;
private System.Windows.Forms.MenuItem cmenuAutoSize;
private System.Windows.Forms.StatusBar statusBar1;
private System.Windows.Forms.StatusBarPanel sbFile;
private System.Windows.Forms.StatusBarPanel sbSize;
private System.Windows.Forms.PrintDialog printDialog1;
private System.Windows.Forms.PrintPreviewDialog printPreviewDialog1;
private System.Windows.Forms.PageSetupDialog pageSetupDialog1;
private System.Drawing.Printing.PrintDocument printDocument1;
private IContainer components;
public Form1()
{
InitializeComponent();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
Остальной код указан в Приложении
1.4. Результат выполнения приложения
Рабочее окно.
Программа с загруженным графическим файлом
Окно при вызове Параметров страницы
Вызов Предварительного просмотра
1.5. Инструкция по использованию программы
Программа предназначена работы с графическими файлами. Для функционирования программы необходим персональный компьютер любой работоспособной конфигурации. Программа может работать в различных операционных системах, таких как Windows 2000/XP/Vista/SEVEN.
Начало работы программы…
1.5.1. Загрузка графического файла
Для загрузки графического файла необходимо нажать файл-открыть (Ctrl+O), и выбрать необходимое изображение.
1.5.2. Вывод графического файла на печать.
Для вывода графического файла на печать необходимо нажать файл-Print (Ctrl+P), и ввести необходимые параметры.
1.5.3. Изменение параметров страниц.
Для изменение параметров страниц необходимо нажать файл-PageSetup, и ввести необходимые параметры
1.5.4. Сохранение графического файла.
Для сохранения графического файла необходимо нажать файл-сохранить (Ctrl+S), и выбрать место куда будет сохранено изображение.
1.5.5. Р едактирования графического файла .
Для редактирования графического файла на необходимо нажать Вид, и Выбрать необходимую функцию.
Для выхода из программы, необходимо нажать файл-выход(Alt+F4).
ЗАКЛЮЧЕНИЕ
На данном этапе развития информационных технологий данная программа может упростить пользователям работу с графическими файлами, которые не требуют большего изменения нежели размеров изображения.
При выполнении курсового проекта были пройдены все этапы разработки специализированного прикладного программного обеспечения:
· формализация задачи;
· сбор необходимых исходных данных, используемых в программе;
· ознакомление с литературой;
· более углубленное изучение платформы .NET
В данном курсовом проекте было разработано визуальное приложение, которое позволяет:
· Открывать графический файл.
· Сохранять графический файл.
· Выводить на печать.
· Изменять страницы печати.
· Изменять размеры графического файла.
Для программы был разработан интерфейс, позволяющий не очень опытному пользователю работать с программой.
В ходе курсового проекта был более детально изучен язык С#, а также использование платформы .NET.
СПИСОК ЛИТЕРАТУРЫ
1. Лабор В.В. – С# Создание приложений для Windows (2003)
2. Шилдт Г. – Полный справочник по C#
3. Эндрю Троелсен - С# и платформа .NET
4. Павловская – Программирование на языке высокого уровня на С#.
5. Фролов А.В. Фролов Г.В. – Язык С#
6. Petzold_Programming_MS_Windows__Sharp_v12
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
using System.Drawing.Printing;
namespace PictureViewer
{
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.MainMenu mainMenu1;
private System.Windows.Forms.MenuItem menuFile;
private System.Windows.Forms.MenuItem menuOpen;
private System.Windows.Forms.MenuItem menuSave;
private System.Windows.Forms.MenuItem menuItem1;
private System.Windows.Forms.MenuItem menuPageSetup;
private System.Windows.Forms.MenuItem menuPreview;
private System.Windows.Forms.MenuItem menuPrint;
private System.Windows.Forms.MenuItem menuItem5;
private System.Windows.Forms.MenuItem menuExit;
private System.Windows.Forms.MenuItem menuView;
private System.Windows.Forms.MenuItem menuResize;
private System.Windows.Forms.OpenFileDialog openFileDialog1;
private System.Windows.Forms.SaveFileDialog saveFileDialog1;
private System.Windows.Forms.ContextMenu contextMenu1;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.MenuItem menuBase;
private System.Windows.Forms.MenuItem menuCenterImage;
private System.Windows.Forms.MenuItem menuAutoSize;
private System.Windows.Forms.MenuItem cmenuResize;
private System.Windows.Forms.MenuItem cmenuBase;
private System.Windows.Forms.MenuItem cmenuCenterImage;
private System.Windows.Forms.MenuItem cmenuAutoSize;
private System.Windows.Forms.StatusBar statusBar1;
private System.Windows.Forms.StatusBarPanel sbFile;
private System.Windows.Forms.StatusBarPanel sbSize;
private System.Windows.Forms.PrintDialog printDialog1;
private System.Windows.Forms.PrintPreviewDialog printPreviewDialog1;
private System.Windows.Forms.PageSetupDialog pageSetupDialog1;
private System.Drawing.Printing.PrintDocument printDocument1;
private IContainer components;
public Form1()
{
InitializeComponent();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.mainMenu1 = new System.Windows.Forms.MainMenu(this.components);
this.menuFile = new System.Windows.Forms.MenuItem();
this.menuOpen = new System.Windows.Forms.MenuItem();
this.menuSave = new System.Windows.Forms.MenuItem();
this.menuItem1 = new System.Windows.Forms.MenuItem();
this.menuPageSetup = new System.Windows.Forms.MenuItem();
this.menuPreview = new System.Windows.Forms.MenuItem();
this.menuPrint = new System.Windows.Forms.MenuItem();
this.menuItem5 = new System.Windows.Forms.MenuItem();
this.menuExit = new System.Windows.Forms.MenuItem();
this.menuView = new System.Windows.Forms.MenuItem();
this.menuResize = new System.Windows.Forms.MenuItem();
this.menuBase = new System.Windows.Forms.MenuItem();
this.menuCenterImage = new System.Windows.Forms.MenuItem();
this.menuAutoSize = new System.Windows.Forms.MenuItem();
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
this.contextMenu1 = new System.Windows.Forms.ContextMenu();
this.cmenuResize = new System.Windows.Forms.MenuItem();
this.cmenuBase = new System.Windows.Forms.MenuItem();
this.cmenuCenterImage = new System.Windows.Forms.MenuItem();
this.cmenuAutoSize = new System.Windows.Forms.MenuItem();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.statusBar1 = new System.Windows.Forms.StatusBar();
this.sbFile = new System.Windows.Forms.StatusBarPanel();
this.sbSize = new System.Windows.Forms.StatusBarPanel();
this.printDialog1 = new System.Windows.Forms.PrintDialog();
this.printPreviewDialog1 = new System.Windows.Forms.PrintPreviewDialog();
this.pageSetupDialog1 = new System.Windows.Forms.PageSetupDialog();
this.printDocument1 = new System.Drawing.Printing.PrintDocument();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.sbFile)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.sbSize)).BeginInit();
this.SuspendLayout();
// mainMenu1
this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuFile,
this.menuView});
// menuFile
this.menuFile.Index = 0;
this.menuFile.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuOpen,
this.menuSave,
this.menuItem1,
this.menuPageSetup,
this.menuPreview,
this.menuPrint,
this.menuItem5,
this.menuExit});
this.menuFile.Text = "&Файл";
this.menuFile.Click += new System.EventHandler(this.menuFile_Click);
// menuOpen
this.menuOpen.Index = 0;
this.menuOpen.Shortcut = System.Windows.Forms.Shortcut.CtrlO;
this.menuOpen.Text = "&Открыть";
this.menuOpen.Click += new System.EventHandler(this.menuOpen_Click);
// menuSave
this.menuSave.Index = 1;
this.menuSave.Shortcut = System.Windows.Forms.Shortcut.CtrlS;
this.menuSave.Text = "&Сохранить";
this.menuSave.Click += new System.EventHandler(this.menuSave_Click);
// menuItem1
this.menuItem1.Index = 2;
this.menuItem1.Text = "-";
// menuPageSetup
this.menuPageSetup.Index = 3;
this.menuPageSetup.Text = "Параметры Стра&ницы";
this.menuPageSetup.Click += new System.EventHandler(this.menuPageSetup_Click);
// menuPreview
this.menuPreview.Index = 4;
this.menuPreview.Text = "Предварительный просм&отр ";
this.menuPreview.Click += new System.EventHandler(this.menuPreview_Click);
// menuPrint
this.menuPrint.Index = 5;
this.menuPrint.Shortcut = System.Windows.Forms.Shortcut.CtrlP;
this.menuPrint.Text = "&Печать";
this.menuPrint.Click += new System.EventHandler(this.menuPrint_Click);
// menuItem5
this.menuItem5.Index = 6;
this.menuItem5.Text = "-";
// menuExit
this.menuExit.Index = 7;
this.menuExit.Shortcut = System.Windows.Forms.Shortcut.AltF4;
this.menuExit.Text = "&Выход";
this.menuExit.Click += new System.EventHandler(this.menuExit_Click);
// menuView
this.menuView.Index = 1;
this.menuView.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuResize,
this.menuBase,
this.menuCenterImage,
this.menuAutoSize});
this.menuView.Text = "&Вид";
this.menuView.Popup += new System.EventHandler(this.menuView_Popup);
this.menuView.Click += new System.EventHandler(this.menuView_Click);
// menuResize
this.menuResize.Index = 0;
this.menuResize.Text = "&Растянутьнавсёокно";
this.menuResize.Click += new System.EventHandler(this.menuResize_Click);
// menuBase
this.menuBase.Index = 1;
this.menuBase.Text = "&Исходный размер";
this.menuBase.Click += new System.EventHandler(this.menuBase_Click);
// menuCenterImage
this.menuCenterImage.Index = 2;
this.menuCenterImage.Text = "&Центрировать";
this.menuCenterImage.Click += new System.EventHandler(this.menuCenterImage_Click);
// menuAutoSize
this.menuAutoSize.Index = 3;
this.menuAutoSize.Text = "&Поумолчанию";
this.menuAutoSize.Click += new System.EventHandler(this.menuAutoSize_Click);
// openFileDialog1
this.openFileDialog1.Title = "Выборизображения";
// saveFileDialog1
this.saveFileDialog1.Title = "Сохранениеизображения";
// contextMenu1
this.contextMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.cmenuResize,
this.cmenuBase,
this.cmenuCenterImage,
this.cmenuAutoSize});
// cmenuResize
this.cmenuResize.Index = 0;
this.cmenuResize.Text = "&Растянутьнавсёокно";
this.cmenuResize.Click += new System.EventHandler(this.cmenuResize_Click);
// cmenuBase
this.cmenuBase.Index = 1;
this.cmenuBase.Text = "&Исходный размер";
this.cmenuBase.Click += new System.EventHandler(this.cmenuBase_Click);
// cmenuCenterImage
this.cmenuCenterImage.Index = 2;
this.cmenuCenterImage.Text = "&Центрировать";
this.cmenuCenterImage.Click += new System.EventHandler(this.cmenuCenterImage_Click);
// cmenuAutoSize
this.cmenuAutoSize.Index = 3;
this.cmenuAutoSize.Text = "&Поумолчанию";
this.cmenuAutoSize.Click += new System.EventHandler(this.cmenuAutoSize_Click);
// pictureBox1
this.pictureBox1.ContextMenu = this.contextMenu1;
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.pictureBox1.Location = new System.Drawing.Point(0, 0);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(616, 266);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
// statusBar1
this.statusBar1.Location = new System.Drawing.Point(0, 244);
this.statusBar1.Name = "statusBar1";
this.statusBar1.Panels.AddRange(new System.Windows.Forms.StatusBarPanel[] {
this.sbFile,
this.sbSize});
this.statusBar1.ShowPanels = true;
this.statusBar1.Size = new System.Drawing.Size(616, 22);
this.statusBar1.TabIndex = 3;
// sbFile
this.sbFile.Name = "sbFile";
this.sbFile.Width = 500;
// sbSize
this.sbSize.Name = "sbSize";
// printPreviewDialog1
this.printPreviewDialog1.AutoScrollMargin = new System.Drawing.Size(0, 0);
this.printPreviewDialog1.AutoScrollMinSize = new System.Drawing.Size(0, 0);
this.printPreviewDialog1.ClientSize = new System.Drawing.Size(400, 300);
this.printPreviewDialog1.Enabled = true;
this.printPreviewDialog1.Icon = ((System.Drawing.Icon)(resources.GetObject("printPreviewDialog1.Icon")));
this.printPreviewDialog1.Name = "printPreviewDialog1";
this.printPreviewDialog1.Visible = false;
// printDocument1
this.printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.printDocument1_PrintPage);
// Form1
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(616, 266);
this.ContextMenu = this.contextMenu1;
this.Controls.Add(this.statusBar1);
this.Controls.Add(this.pictureBox1);
this.Menu = this.mainMenu1;
this.Name = "Form1";
this.Text = "Picture Viewer";
this.Load += new System.EventHandler(this.Form1_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.sbFile)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.sbSize)).EndInit();
this.ResumeLayout(false);
}
#endregion
private PictureBoxSizeMode[] ArrayMenu =
{
PictureBoxSizeMode.StretchImage,
PictureBoxSizeMode.Normal,
PictureBoxSizeMode.CenterImage,
PictureBoxSizeMode.AutoSize
};
private int selectedMode = 0;
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void menuOpen_Click(object sender, System.EventArgs e)
{
OpenFileDialog diag = new OpenFileDialog();
diag.Filter = "jpg files (*.jpg)|*.jpg|All files (*.*)|*.*" ;
if (diag.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = new Bitmap(diag.OpenFile());
}
sbFile.Text = "Загрузка " + diag.FileName;
sbFile.Text = "Изображение " + diag.FileName;
sbSize.Text= String.Format("{0:#} x {1:#}", pictureBox1.Image.Width, pictureBox1.Image.Height);
}
private void menuSave_Click(object sender, System.EventArgs e)
{
SaveFileDialog diag = new SaveFileDialog();
diag.Filter = "jpg files (*.jpg)|*.jpg|All files (*.*)|*.*" ;
if(diag.ShowDialog() != DialogResult.OK)
return;
string filename = diag.FileName;
FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.ReadWrite);
pictureBox1.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
fs.Close();
}
private void menuExit_Click(object sender, System.EventArgs e)
{
this.Close();
}
private void menuResize_Click(object sender, System.EventArgs e)
{
if (sender is MenuItem)
{
MenuItem menuitem = (MenuItem)sender;
selectedMode = menuitem.Index;
pictureBox1.SizeMode = ArrayMenu[0];
pictureBox1.Invalidate();
}
}
private void menuBase_Click(object sender, System.EventArgs e)
{
if (sender is MenuItem)
{
MenuItem menuitem = (MenuItem)sender;
selectedMode = menuitem.Index;
pictureBox1.SizeMode = ArrayMenu[1];
pictureBox1.Invalidate();
}
}
private void menuView_Popup(object sender, System.EventArgs e)
{
if (sender is MenuItem)
{
bool ImLoad = (pictureBox1.Image != null);
foreach (MenuItem menuitem in ((MenuItem)sender).MenuItems)
{
menuitem.Enabled = ImLoad;
menuitem.Checked = (this.selectedMode == menuitem.Index);
}
}
}
private void menuCenterImage_Click(object sender, System.EventArgs e)
{
if (sender is MenuItem)
{
MenuItem menuitem = (MenuItem)sender;
selectedMode = menuitem.Index;
pictureBox1.SizeMode = ArrayMenu[2];
pictureBox1.Invalidate();
}
}
private void menuAutoSize_Click(object sender, System.EventArgs e)
{
if (sender is MenuItem)
{
MenuItem menuitem = (MenuItem)sender;
selectedMode = menuitem.Index;
pictureBox1.SizeMode = ArrayMenu[3];
pictureBox1.Invalidate();
}
}
private void cmenuResize_Click(object sender, System.EventArgs e)
{
if (sender is MenuItem)
{
MenuItem menuitem = (MenuItem)sender;
selectedMode = menuitem.Index;
pictureBox1.SizeMode = ArrayMenu[0];
pictureBox1.Invalidate();
}
}
private void cmenuBase_Click(object sender, System.EventArgs e)
{
if (sender is MenuItem)
{
MenuItem menuitem = (MenuItem)sender;
selectedMode = menuitem.Index;
pictureBox1.SizeMode = ArrayMenu[1];
pictureBox1.Invalidate();
}
}
private void cmenuCenterImage_Click(object sender, System.EventArgs e)
{
if (sender is MenuItem)
{
MenuItem menuitem = (MenuItem)sender;
selectedMode = menuitem.Index;
pictureBox1.SizeMode = ArrayMenu[2];
pictureBox1.Invalidate();
}
}
private void cmenuAutoSize_Click(object sender, System.EventArgs e)
{
if (sender is MenuItem)
{
MenuItem menuitem = (MenuItem)sender;
selectedMode = menuitem.Index;
pictureBox1.SizeMode = ArrayMenu[3];
pictureBox1.Invalidate();
}
}
private void menuPageSetup_Click(object sender, System.EventArgs e)
{
PageSetupDialog diag
= new PageSetupDialog();
diag.Document = printDocument1;
diag.ShowDialog();
}
private void menuPreview_Click(object sender, System.EventArgs e)
{
PrintPreviewDialog diag
= new PrintPreviewDialog();
diag.Document = printDocument1;
diag.ShowDialog();
}
private void menuPrint_Click(object sender, System.EventArgs e)
{
PrintDialog diag = new PrintDialog();
diag.Document = printDocument1;
if (diag.ShowDialog() == DialogResult.OK)
{
printDocument1.Print();
}
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
//Если в pictureBox1 не загружена изображение, возвращаемся назад
if (pictureBox1.Image == null)
{
e.Cancel = true;
return;
}
//Определяемпечатнуюобластьстраницы
float leftMargin = e.MarginBounds.Left;
float rightMargin = e.MarginBounds.Right;
float topMargin = e.MarginBounds.Top;
float bottomMargin= e.MarginBounds.Bottom;
float printableWidth = e.MarginBounds.Width;
float printableHeight = e.MarginBounds.Height;
//Cоздаемэкземпляр graph класса Graphics
Graphics graph = e.Graphics;
//Создаемэкземпляр font класса Font
Font font= new Font("Comic Sans MS", 16);
//Определяемвысотушрифта
float fontHeight = font.GetHeight(graph);
//Определяемразмерпробелов
float spaceWidth = graph.MeasureString(" ", font).Width;
//Определяем область, в которую будет вписываться изображение,
//размер наибольшей стороны изображения составялет 90%
//от кратчайшей стороны листа
float imageLength;
float Xposition = leftMargin;
float Yposition = topMargin + fontHeight;
if (printableWidth < printableHeight)
{
imageLength = printableWidth * 90/100;
Yposition += imageLength;
}
else
{
imageLength = printableHeight * 90/100;
Xposition += imageLength + spaceWidth;
}
// Выводимизображениевобласти rectImage
Rectangle rectImage = new Rectangle((int)leftMargin + 1, (int)topMargin + 1,(int)imageLength, (int)imageLength);
graph.DrawImage(pictureBox1.Image,(int)leftMargin + 1, (int)topMargin + 1, (int)imageLength,(int)imageLength);
// Определяем область rectText и выводим в нее строку с размером файла
RectangleF rectText = new RectangleF(Xposition, Yposition, rightMargin - Xposition, bottomMargin - Yposition);
PrintText(graph, font,"Размеризображения: ", Convert.ToString(pictureBox1.Image.Size), ref rectText);
}
protected void PrintText( Graphics graph, Font font, string name, string text, ref RectangleF rectText)
{
// Определяем размеры печатной области для текста:
float leftMargin = rectText.Left;
float rightMargin = rectText.Right;
float topMargin = rectText.Top;
float bottomMargin = rectText.Bottom;
//Определяем высоту текста и координаты, где он будет выводиться:
float fontHeight = font.GetHeight(graph);
float Xposition = rectText.Left;
float Yposition = topMargin + fontHeight;
//Определяем ширину текста и размер пробелов
float spaceWidth = graph.MeasureString(" ", font).Width;
float nameWidth = graph.MeasureString(name, font).Width;
graph.DrawString(name, font,
Brushes.Black, new PointF(Xposition, Yposition));
leftMargin += nameWidth + spaceWidth;
Xposition = leftMargin;
// Формируем несколько строк для текста в случае,
// если он не будет умещаться на одной строке
string[] words
= text.Split(" \r\t\n\0".ToCharArray());
foreach (string word in words)
{
float wordWidth = graph.MeasureString(
word, font).Width;
if (wordWidth == 0.0)
continue;
if (Xposition + wordWidth > rightMargin)
{
// Начало с новой строки
Xposition = leftMargin;
Yposition += fontHeight;
if (Yposition > bottomMargin)
{
break;
}
}
graph.DrawString(word, font,Brushes.Black, new PointF(Xposition, Yposition));
Xposition += wordWidth;
}
// Исключаем область, на которую был выведен текст из области печати
//для избежания наложения текста и рисунка
rectText.Y = Yposition;
rectText.Height = bottomMargin - Yposition;
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void menuFile_Click(object sender, EventArgs e)
{
}
private void menuView_Click(object sender, EventArgs e)
{
}
}
}