Скачать презентацию С Windows Applications 04 C Windows Applications Скачать презентацию С Windows Applications 04 C Windows Applications

04_C#_Windows Applications.ppt

  • Количество слайдов: 29

С#. Windows Applications 04. C#. Windows Applications С#. Windows Applications 04. C#. Windows Applications

План лекции Типы проектов q Организация интерфейса q Форма и элементы управления q Взаимодействие План лекции Типы проектов q Организация интерфейса q Форма и элементы управления q Взаимодействие форм q Рисование в форме q Класс Graphics q Методы класса Graphics q Пример проекта q 04. C#. Windows Applications 2

04. C#. Windows Applications 3 04. C#. Windows Applications 3

Передача информации между формами Представим себе, что несколько форм должны работать с объектом класса Передача информации между формами Представим себе, что несколько форм должны работать с объектом класса Books. Пусть в главной форме такой объект объявлен: public Books my. Books; В конструкторе главной формы такой объект создается: my. Books = new Books(max_books); где max_books - заданная константа. Пусть еще в главной форме объявлена форма - объект класса New. Book: public New. Book form 2; 04. C#. Windows Applications 4

Передача информации между формами При создании объекта form 2 его конструктору передается ссылка на Передача информации между формами При создании объекта form 2 его конструктору передается ссылка на главную форму: form 2 = new New. Book(this); Класс New. Book содержит поля: private Form 1 mainform; private Books books; а его конструктор следующий код: mainform = form; books = mainform. my. Books; 04. C#. Windows Applications 5

Передача информации между формами Теперь объекту form 2 доступны ранее созданные объекты, задающие книги Передача информации между формами Теперь объекту form 2 доступны ранее созданные объекты, задающие книги и главную форму, так что в обработчике события Closed, возникающего при закрытии формы, можно задать код: private void New. Book_Closed(object sender, System. Event. Args e) { mainform. Show(); } открывающий главную форму. 04. C#. Windows Applications 6

Класс Graphics При рисовании в формах можно объявить в форме поле, описывающее объект класса Класс Graphics При рисовании в формах можно объявить в форме поле, описывающее объект класса Graphics: Graphics graph; а в конструкторе формы произвести связывание с реальным объектом: graph = Create. Graphics(); Затем всюду в программе, где нужно работать с графикой, используется глобальный для формы объект graph и его методы. Есть другой способ получения этого объекта - обработчики некоторых событий получают объект класса Graphics среди передаваемых им аргументов. Например, в обработчике события Paint, занимающегося перерисовкой, этот объект можно получить так: protected override void On. Paint(System. Windows. Forms. Paint. Event. Args e) { Graphics gr = e. Graphics; //перерисовка, использующая методы объекта gr } 04. C#. Windows Applications 7

Методы класса Graphics Для рисования важны три группы методов: q Draw. String; q Draw Методы класса Graphics Для рисования важны три группы методов: q Draw. String; q Draw - Draw. Ellipse, Draw. Line, Draw. Arc и др. ; q Fill - Fill. Ellipse, Fill. Pie, Fill. Rectangle и др. ; 04. C#. Windows Applications 8

Класс Pen. Класс Brush является абстрактным классом, так что создавать кисти этого класса нельзя, Класс Pen. Класс Brush является абстрактным классом, так что создавать кисти этого класса нельзя, но можно создавать кисти классов-потомков Brush. Таких классов пять - они задают кисть: Solid. Brush - для сплошной закраски области заданным цветом; Texture. Brush - для закраски области заданной картинкой (image); Hatch. Brush - для закраски области предопределенным узором; Linear. Gradient. Brush - для сплошной закраски с переходом от одного цвета к другому, где изменение оттенков задается линейным градиентом; Path. Gradient. Brush - для сплошной закраски с переходом от одного цвета к другому, где изменение оттенков задается более сложным путем. Первые два класса кистей находятся в пространстве имен System. Drawing, остальные - в System. Drawing 2 D. 04. C#. Windows Applications 9

Пример проекта Построим проект для рисования в формах. В одной из форм будем рисовать Пример проекта Построим проект для рисования в формах. В одной из форм будем рисовать пером, в другом - кистями различного типа. Главную форму сделаем простой кнопочной формой. Вот как она выглядит. 04. C#. Windows Applications 10

Пример проекта Построим проект для рисования в формах. В одной из форм будем рисовать Пример проекта Построим проект для рисования в формах. В одной из форм будем рисовать пером, в другом - кистями различного типа. Главную форму сделаем простой кнопочной формой. Вот как она выглядит. Выбор соответствующей командной кнопки открывает форму для рисования пером или кистью. 04. C#. Windows Applications 11

Пример. Кривые Безье. Окно формы 04. C#. Windows Applications 12 Пример. Кривые Безье. Окно формы 04. C#. Windows Applications 12

Пример. Паутина Безье //fields Point center; Point[] points = new Point[10]; Pen pen; Graphics Пример. Паутина Безье //fields Point center; Point[] points = new Point[10]; Pen pen; Graphics graph; int count; } 04. C#. Windows Applications 13

Пример. Паутина Безье void My. Init() { int cx = Client. Size. Width; int Пример. Паутина Безье void My. Init() { int cx = Client. Size. Width; int cy = Client. Size. Height; points[0] = new Point(0, 0); points[1] = new Point(cx/2, 0); points[2] = new Point(cx, 0); points[3] = new Point(0, cy/2); points[4] = new Point(cx, cy/2); points[5] = new Point(0, cy); points[6] = new Point(cx/2, cy); points[7] = new Point(cx, cy); points[8] = new Point(0, 0); points[9] = new Point(cx/2, 0); graph = this. Create. Graphics(); center = new Point(cx/2, cy/2); count =1; } 04. C#. Windows Applications 14

Пример. Паутина Безье void Draw. Web() { for (int i = 0; i<8; i++) Пример. Паутина Безье void Draw. Web() { for (int i = 0; i<8; i++) graph. Draw. Bezier(pen, center, points[i], points[i+2], points[i+1]); } 04. C#. Windows Applications 15

Пример. Паутина Безье private void Bezier. Web_Mouse. Move(object sender, System. Windows. Forms. Mouse. Event. Пример. Паутина Безье private void Bezier. Web_Mouse. Move(object sender, System. Windows. Forms. Mouse. Event. Args e) { pen = System. Pens. Control; Draw. Web(); center. X = e. X; center. Y = e. Y; //pen = new Pen(Color. Aquamarine); pen = System. Pens. Control. Text; Draw. Web(); } 04. C#. Windows Applications 16

Пример. Событие Paint protected override void On. Paint(System. Windows. Forms. Paint. Event. Args e) Пример. Событие Paint protected override void On. Paint(System. Windows. Forms. Paint. Event. Args e) { pen = System. Pens. Control. Text; Draw. Web(); //Debug. Write. Line(count++); } 04. C#. Windows Applications 17

Пример. Кривые Безье. Окно формы 04. C#. Windows Applications 18 Пример. Кривые Безье. Окно формы 04. C#. Windows Applications 18

Пример. Рисование кистью 04. C#. Windows Applications 19 Пример. Рисование кистью 04. C#. Windows Applications 19

Пример. Рисование кистью //fields int cx, cy; Graphics graph; Brush brush; Color color; Random Пример. Рисование кистью //fields int cx, cy; Graphics graph; Brush brush; Color color; Random rnd; 04. C#. Windows Applications 20

Пример. Рисование кистью void My. Init() { cx = Client. Size. Width; cy = Пример. Рисование кистью void My. Init() { cx = Client. Size. Width; cy = Client. Size. Height; graph = Create. Graphics(); rnd = new Random(); } 04. C#. Windows Applications 21

Пример. Рисование кистью void Draw. Shapes() { for(int i=0; i<3; i++) { //выбирается цвет Пример. Рисование кистью void Draw. Shapes() { for(int i=0; i<3; i++) { //выбирается цвет - красный, желтый, голубой int numcolor = rnd. Next(3); switch (numcolor) { case 0: color = Color. Blue; break; case 1: color = Color. Yellow; break; case 2: color = Color. Red; break; } 04. C#. Windows Applications 22

Пример. Рисование кистью //градиентной кистью рисуется эллипс, //местоположение случайно Point top = new Point(rnd. Пример. Рисование кистью //градиентной кистью рисуется эллипс, //местоположение случайно Point top = new Point(rnd. Next(cx), rnd. Next(cy)); Size sz = new Size(rnd. Next(cx-top. X), rnd. Next(cy-top. Y)); Rectangle rct = new Rectangle(top, sz); Point bottom = top + sz; brush = new Linear. Gradient. Brush(top, bottom, Color. White, color); graph. Fill. Ellipse(brush, rct); 04. C#. Windows Applications 23

Пример. Рисование кистью //сплошной кистью рисуется сектор, //местоположение случайно top = new Point(rnd. Next(cx), Пример. Рисование кистью //сплошной кистью рисуется сектор, //местоположение случайно top = new Point(rnd. Next(cx), rnd. Next(cy)); sz = new Size(rnd. Next(cx-top. X), rnd. Next(cy-top. Y)); rct = new Rectangle(top, sz); brush = new Solid. Brush(color); graph. Fill. Pie(brush, rct, 30 f, 60 f); 04. C#. Windows Applications 24

Пример. Рисование кистью //узорной кистью рисуется прямоугольник, //местоположение случайно top = new Point(rnd. Next(cx), Пример. Рисование кистью //узорной кистью рисуется прямоугольник, //местоположение случайно top = new Point(rnd. Next(cx), rnd. Next(cy)); sz = new Size(rnd. Next(cx-top. X), rnd. Next(cy-top. Y)); rct = new Rectangle(top, sz); Hatch. Style hs = (Hatch. Style)rnd. Next(52); brush = new Hatch. Brush(hs, Color. White, Color. Black); graph. Fill. Rectangle(brush, rct); } } 04. C#. Windows Applications 25

Пример. Рисование кистью Вызов метода Draw. Shapes, как уже говорилось, встроим в обработчик события Пример. Рисование кистью Вызов метода Draw. Shapes, как уже говорилось, встроим в обработчик события Click формы Random. Shapes: private void Random. Shapes_Click(object sender, System. Event. Args e) { Draw. Shapes(); } 04. C#. Windows Applications 26

Пример. Рисование кистью 04. C#. Windows Applications 27 Пример. Рисование кистью 04. C#. Windows Applications 27

Вопросы ? ? ? 04. C#. Windows Applications 28 Вопросы ? ? ? 04. C#. Windows Applications 28

План лекции q q q q Типы проектов Организация интерфейса Форма и элементы управления План лекции q q q q Типы проектов Организация интерфейса Форма и элементы управления Взаимодействие форм Образцы форм Работа со списками Наследование форм Организация меню в формах Создание инструментальной панели с командными кнопками Рисование в форме Класс Graphics Методы класса Graphics Пример проекта 04. C#. Windows Applications 29