Private void pictureBox2_MouseUp(object sender, MouseEventArgs e)




{

switch (this.FigureList.SelectedIndex ) // Выбор фигуры

{

case 0: // Выбрана линия

This.g.DrawLine(new Pen(this.pictureBox1.BackColor,

(float)this.numericUpDown1.Value), this.startPoint, new Point

(e.X, e.Y));

 

// Метод Invalidate() делает недействительной область рисования элемента

// управления pictureBox2, добавляя ее к области обновления элемента,

// которая будет перерисована при следующей операции рисования,

// и вызывает отправку сообщения элементу управления

this.pictureBox2.Invalidate();

break;

case 1: // Выбран прямоугольник

This.g.DrawRectangle(new Pen(this.pictureBox1.BackColor,

(float)this.numericUpDown1.Value), this.startPoint.X, this.startPoint.Y,

e.X this.startPoint.X, e.Y-this.startPoint.Y);

If (this.FillCheckbox.Checked)

{

This.g.FillRectangle(new Solid-Brush

(this.pictureBox1.BackColor),

this.startPoint.X, this.startPoint.Y, e.X - this.startPoint.X, e.Y –

this.startPoint.Y);

}

this.pictureBox2.Invalidate();

break;

case 2: // Выбран эллипс

This.g.DrawEllipse(new Pen(this.pictureBox1.BackColor,

(float)this.numericUpDown1.Value), this.startPoint.X,

this.startPoint.Y, e.X – this.startPoint.X, e.Y - this.startPoint.Y);

If (this.FillCheckbox.Checked)

{

This.g.FillEllipse(new Solid-Brush

(this.pictureBox1.BackColor),

this.startPoint.X, this.startPoint.Y, e.X - this.startPoint.X, e.Y –

this.startPoint.Y);

}

this.pictureBox2.Invalidate();

break;

}

}

// Щелчок по пункту меню New

Private void newToolStripMenuItem_Click(object sender, EventArgs e)

{

this.g.Clear(Color.White);

this.pictureBox2.Invalidate();

}

// Щелчок по пункту меню Exit

private void exitToolStripMenuItem_Click(object sender, EventArgs e)

{ this.Close(); }

// Щелчок по пункту меню Open

Private void openToolStripMenuItem_Click(object sender, EventArgse)

{

if (this.openFileDialog1.ShowDialog() == DialogResult.OK) {

this.g.Clear(Color.White);

//Можно загружать файлы форматов BMP, GIF, JPEG, PNG, TIFF

This.g.DrawImage(Image.FromFile(this.openFileDialog1.FileName), new

Point(0,0));

this.pictureBox2.Invalidate();

}

}

// Щелчок по пункту меню Save

Private void saveToolStripMenuItem_Click(object sender, EventArgs e)

{

if (this.saveFileDialog1.ShowDialog() == DialogResult.OK)

{

// Сохранение изображения из объекта b класса Bitmap в файле, имя

// которого задается в стандартном диалоговом окне saveFileDialog1

// Файл сохраняется в формате JPEG

// Можно сохранить файл также в форматах BMP, GIF, PNG, TIFF

this.b.Save(this.saveFileDialog1.FileName,

System.Drawing.Imaging.ImageFormat.Jpeg);

}

}

}

}

 

Порядок выполнения работы

 

1. Изучить теоретические сведения и примеры, представленные в гл. 12 «Программирование графики» учебного пособия В. В. Вдовенко «Разработка приложений на языке С#» (см. с. 258–272), а также пример программы, представленный выше.

2. Ответить на контрольные вопросы.

3. Выполнить практическое задание.

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

 

Контрольные вопросы и задания

 

1. Дайте определение графического интерфейса устройства.

2. Какой класс библиотеки FCL является базовым при выводе графики?

3. Какие способы создания объекта класса Graphics вы знаете? Приведите синтаксис создания объекта класса Graphics.

4. Какое событие наступает всякий раз, когда у окна имеется
поврежденная область вывода изображения?

5. Обработчик какого события должен быть переопределен
в классе формы, чтобы помещенное на ней изображение перерисовывалось при изменении размеров окна?

6. Каким образом в приложении можно задать цвет изображения?

7. В чем состоит отличие задания цвета изображения с помощью структуры Color и с помощью метода FromArgb?

8. Какое стандартное диалоговое окно можно использовать для выбора из него цвета изображения?

9. Какие группы методов класса Graphics применяются для рисования геометрических фигур?

10. Объект какого класса предназначен для вывода контуров фигур?

11. Какой метод можно использовать для рисования текста?

12. Каким образом выполняется заливка поверхности фигуры?

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

14. Какой класс следует использовать для загрузки изображения из файла?

Практическое задание

Разработать приложение Простой графический редактор.

Приложение должно содержать меню и панель инструментов, посредством которых можно не только выбрать изображаемую фигуру, но и задать свойства объектов рисования:

– цвет, ширину, стиль перьев;

– цвет, стиль кистей.

Программа должна предоставлять пользователю возможность сохранять изображение в файле и загружать изображение из файла.

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

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

Лабораторная работа 7



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-09-06 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: