Разработка ПО графического редактора

МИНСКИЙ ИНСТИТУТ УПРАВЛЕНИЯ


Факультет Учётно-Финансовый «К защите допускаю»

Кафедра АИС Демидович Е.М.

« » ____________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

Оформление курсовой работы





Руководитель ______________________________________Демидович Е.М.

Задание принял к исполнению______________________________________

(подпись)


ОГЛАВЛЕНИЕ





ПОСТАНОВКА ЗАДАЧИ


Цель данной курсовой работы: разработка программы для работы с графическими файлами, используя язык программирования высокого уровня С# на платформе .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. Начало работы программы…



1.5.1. Загрузка графического файла

Для загрузки графического файла необходимо нажать файл-открыть (Ctrl+O), и выбрать необходимое изображение.



1.5.2. Вывод графического файла на печать.

Для вывода графического файла на печать необходимо нажать файл-Print (Ctrl+P), и ввести необходимые параметры.


1.5.3. Изменение параметров страниц.

Для изменение параметров страниц необходимо нажать файл-Page Setup, и ввести необходимые параметры


1.5.4. Сохранение графического файла.

Для сохранения графического файла необходимо нажать файл-сохранить (Ctrl+S), и выбрать место куда будет сохранено изображение.


1.5.5. Редактирования графического файла .

Для редактирования графического файла на необходимо нажать Вид, и Выбрать необходимую функцию.



1.5.6. Выход из программы

Для выхода из программы, необходимо нажать файл-выход(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.AutoScroll"> 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 left"> float right"> float top"> float bottom"> float printableWidth = e."> float printableHeight = e."> //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 = left"> float Yposition = top"> if (printableWidth < printableHeight)

{

imageLength = printableWidth * 90/100;

Yposition += imageLength;

}

else

{

imageLength = printableHeight * 90/100;

Xposition += imageLength + spaceWidth;

}

// Выводим изображение в области rectImage

Rectangle rectImage = new Rectangle((int)left"> graph.DrawImage(pictureBox1.Image,(int)left"> // Определяем область rectText и выводим в нее строку с размером файла

RectangleF rectText = new RectangleF(Xposition, Yposition, right"> 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 left"> float right"> float top"> float bottom"> //Определяем высоту текста и координаты, где он будет выводиться:

float fontHeight = font.GetHeight(graph);

float Xposition = rectText.Left;

float Yposition = top"> //Определяем ширину текста и размер пробелов

float spaceWidth = graph.MeasureString(" ", font).Width;

float nameWidth = graph.MeasureString(name, font).Width;

graph.DrawString(name, font,

Brushes.Black, new PointF(Xposition, Yposition));

left"> Xposition = left"> // Формируем несколько строк для текста в случае,

// если он не будет умещаться на одной строке

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 > right"> {

// Начало с новой строки

Xposition = left"> Yposition += fontHeight;

if (Yposition > bottom"> {

break;

}

}

graph.DrawString(word, font,Brushes.Black, new PointF(Xposition, Yposition));

Xposition += wordWidth;

}

// Исключаем область, на которую был выведен текст из области печати

//для избежания наложения текста и рисунка

rectText.Y = Yposition;

rectText.Height = bottom">

}


private void Form1_Load(object sender, EventArgs e)

{

}


private void menuFile_Click(object sender, EventArgs e)

{

}


private void menuView_Click(object sender, EventArgs e)

{


}

}

}

Нравится материал? Поддержи автора!

Ещё документы из категории информатика:

X Код для использования на сайте:
Ширина блока px

Скопируйте этот код и вставьте себе на сайт

X

Чтобы скачать документ, порекомендуйте, пожалуйста, его своим друзьям в любой соц. сети.

После чего кнопка «СКАЧАТЬ» станет доступной!

Кнопочки находятся чуть ниже. Спасибо!

Кнопки:

Скачать документ