Namespace WindowsApplication2 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Namespace WindowsApplication2



{

public partial class Form1: Form

{

   public Form1()

{

 InitializeComponent();

}

// Класс Bitmap инкапсулирует точечный рисунок GDI+, состоящий из

// данных пикселей графического изображения и атрибутов рисунка

// Объект класса Bitmap используется для работы с изображениями,

// определяемыми данными пикселей

   Bitmap b;

   Graphics g;

// Класс Point представляет упорядоченную пару  целых чисел –

// координат Х и Y, определяющую точку на двумерной плоскости

   Point startPoint;

// Щелчок по элементу pictureBox1 позволяет выполнить выбор цвета

// изображения

   private void pictureBox1_Click(object sender, EventArgs e)

   {

       this.colorDialog1.Color = this.pictureBox1.BackColor;

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

       {

             this.pictureBox1.BackColor = this.colorDialog1.Color;

       }

   }

   private void Form1_Load(object sender, EventArgs e)

   {

// Задание размеров поверхности рисования

this.b = new Bitmap(this.pictureBox2.Size.Width,

this.pictureBox2.Size.Height);

       this.g = Graphics.FromImage(this.b);

       this.pictureBox2.Image = b;

       this.g.Clear(Color.White);

       this.FigureList.SelectedIndex = 0;

   }

   private void pictureBox2_MouseDown(object sender,

   MouseEventArgs e)

   {

       this.startPoint = new Point(e.X, e.Y);

   }

    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 () делает недействительной область рисования элемента

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

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

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

               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 в файле, имя

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

// Файл сохраняется в формате 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. Какие способы создания объекта класса Grap h ics вы знаете? Приведите синтаксис создания объекта класса Grap h ics.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Работа с файловой системой

Цель работы: получить практические навыки применения основных классов библиотеки FCL, позволяющих выполнять различные операции с файлами и папками на диске.

Задачи работы:

– изучить классы Path, FileSystemInfo, Directory, DirectoryInfo, File и FileInfo библиотеки FCL,   используемые для работы с объектами файловой системы;

– выполнить практическое задание по разработке приложения на языке С#.

 



Поделиться:


Последнее изменение этой страницы: 2022-09-03; просмотров: 67; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.219.22.169 (0.012 с.)