Чтение онлайн

на главную

Жанры

Интернет-журнал "Домашняя лаборатория", 2007 №9
Шрифт:

Рис. 24.11. Проектирование панели с командными кнопками

Проанализируем теперь созданный дизайнером программный код. Как всегда начнем с полей класса, хранящих созданные в процессе проектирования элементы:

private System.Windows.Forms.ToolBar tooiBar1;

private System.Windows.Forms.ImageList imageList1;

private System.Windows.Forms.ToolBarButton toolBarButton1;

private System.Windows.Forms.ToolBarButton toolBarButton2;

private System.Windows.Forms.ToolBarButton toolBarButton3;

В

методе InitializeComponent эти объекты создаются и инициализируются:

this.toolBar1 = new System.Windows.Forms.ToolBar;

this.imageList1 = new System.Windows.Forms.ImageList(this.components);

this.toolBarButton1 = new System.Windows.Forms.ToolBarButton;

this.toolBarButton2 = new System.Windows.Forms.ToolBarButton;

this.toolBarButton3 = new System.Windows.Forms.ToolBarButton;

// toolBar1

this.toolBari.Buttons.AddRange(new System.Windows.Forms.ToolBarButton[]

{this.toolBarButton1, this.toolBarButton2,this.toolBarButton3});

this.toolBar1.DropDownArrows = true;

this.toolBar1.ImageList = this.imageList1;

this.toolBar1.Name = "toolBar1";

this.toolBar1.ShowToolTips = true;

this.toolBar1.Size = new System.Drawing.Size(432, 42);

this.toolBar1.Tablndex = 1;

this.toolBar1.ButtonClick +=

new System.Windows.Forms.ToolBarButtonClickEventHandler

this.toolBar1_ButtonClick);

// toolBarButton1

this.toolBarButton1.Imagelndex = 0;

this.toolBarButton1.Text = "OpenFile";

this.toolBarButton1.ToolTipText =

"Диалоговое окно открытия файла";

Этот текст должен быть понятен без комментариев, а вот об обработчике события Click стоит сказать несколько слов. Во-первых, событие Click не связывается с каждой командной кнопкой, расположенной на панели, — оно связано с самой панелью. Так что в обработчике происходит разбор случаев с анализом того, какая кнопка была нажата. Вот как это делается:

private void toolBar1_ButtonClick(object sender,

System.Windows.Forms.ToolBarButtonClickEventArgs e)

{

int buttonNumber = toolBarl.Buttons.IndexOf(e.Button);

switch (buttonNumber)

{

case 0:

OpenFileDialog openFileDialog1 = new OpenFileDialog;

openFileDialog1.ShowDialog;

//код, показывающий, что делать с открытым файлом

textBox1.Text = "Открытие Файла!";

break;

case 1:

SaveFileDialog saveFileDialog1 = new SaveFileDialog ;

saveFileDialog1.ShowDialog;

//код, анализирующий результат операции сохранения файла

textBox1.Text = "Сохранение Файла!";

break;

default:

ColorDialog colorDialog1 = new ColorDialog;

if (colorDialog1.ShowDialog== DialogResult.OK)

this.textBox1.BackColor =colorDialogl.Color;

break;

}

}

В заключение взгляните на спроектированную форму с меню и панелью с командными кнопками.

Рис. 24.12. Форма с меню и инструментальной панелью

Рисование в форме

Графика необходима при организации пользовательского интерфейса. Образы информативнее текста. Framework.Net реализует расширенный графический интерфейс GDI +, обладающий широким набором возможностей. Но для рисования в формах достаточно иметь три объекта — перо, кисть и, хочется сказать, бумагу, но третий нужный объект — это объект класса Graphics, методы которого позволяют в формах заниматься графикой — рисовать и раскрашивать.

Класс Graphics

Класс Graphicsэто основной класс, необходимый для рисования. Класс Graphics, так же, как и другие рассматриваемые здесь классы для перьев и кистей, находятся в пространстве имен Drawing, хотя классы некоторых кистей вложены в подпространство Drawing2D.

Объекты этого класса зависят от контекста устройства, (графика не обязательно отображается на дисплее компьютера, она может выводиться на принтер, графопостроитель или другие устройства), поэтому создание объектов класса Graphics выполняется не традиционным способом — без вызова конструктора класса. Создаются объекты специальными методами разных классов. Например, метод CreateGraphics класса Control — наследника класса Form — возвращает объект, ассоциированный с выводом графики на форму.

При рисовании в формах можно объявить в форме поле, описывающее объект класса Graphics:

Graphics graph;

а в конструкторе формы произвести связывание с реальным объектом:

graph = CreateGraphics ;

Затем всюду в программе, где нужно работать с графикой, используется глобальный для формы объект graph и его методы. Есть другой способ получения этого объекта — обработчики некоторых событий получают объект класса Graphics среди передаваемых им аргументов. Например, в обработчике события Paint, занимающегося перерисовкой, этот объект можно получить так:

protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)

{

Graphics gr = e.Graphics;

//перерисовка, использующая методы объекта gr

}

Для получения этого объекта можно использовать и статические методы самого класса Graphics.

Методы класса Graphics

У класса Graphics большое число методов и свойств. Упомяну лишь о некоторых из них. Группа статических методов класса позволяет создать объект этого класса, задавая например описатель (handle) контекста устройства.

Поделиться:
Популярные книги

Совок 2

Агарев Вадим
2. Совок
Фантастика:
альтернативная история
7.61
рейтинг книги
Совок 2

Сама себе хозяйка

Красовская Марианна
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Сама себе хозяйка

СД. Том 17

Клеванский Кирилл Сергеевич
17. Сердце дракона
Фантастика:
боевая фантастика
6.70
рейтинг книги
СД. Том 17

Первый пользователь. Книга 3

Сластин Артем
3. Первый пользователь
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Первый пользователь. Книга 3

Хочу тебя навсегда

Джокер Ольга
2. Люби меня
Любовные романы:
современные любовные романы
5.25
рейтинг книги
Хочу тебя навсегда

Адъютант

Демиров Леонид
2. Мания крафта
Фантастика:
фэнтези
6.43
рейтинг книги
Адъютант

Убивать, чтобы жить

Бор Жорж
1. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать, чтобы жить

Измена. Испорченная свадьба

Данич Дина
Любовные романы:
современные любовные романы
короткие любовные романы
5.00
рейтинг книги
Измена. Испорченная свадьба

Я – Орк. Том 3

Лисицин Евгений
3. Я — Орк
Фантастика:
юмористическое фэнтези
попаданцы
5.00
рейтинг книги
Я – Орк. Том 3

Крестоносец

Ланцов Михаил Алексеевич
7. Помещик
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Крестоносец

Совок – 3

Агарев Вадим
3. Совок
Фантастика:
фэнтези
детективная фантастика
попаданцы
7.92
рейтинг книги
Совок – 3

С Д. Том 16

Клеванский Кирилл Сергеевич
16. Сердце дракона
Фантастика:
боевая фантастика
6.94
рейтинг книги
С Д. Том 16

Назад в СССР: 1986 Книга 5

Гаусс Максим
5. Спасти ЧАЭС
Фантастика:
попаданцы
альтернативная история
5.75
рейтинг книги
Назад в СССР: 1986 Книга 5

Ретроградный меркурий

Рам Янка
4. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Ретроградный меркурий