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

на главную - закладки

Жанры

Интернет-журнал "Домашняя лаборатория", 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) контекста устройства.

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

Начальник милиции. Книга 4

Дамиров Рафаэль
4. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции. Книга 4

Отморозок 2

Поповский Андрей Владимирович
2. Отморозок
Фантастика:
попаданцы
5.00
рейтинг книги
Отморозок 2

Весь цикл «Десантник на престоле». Шесть книг

Ланцов Михаил Алексеевич
Десантник на престоле
Фантастика:
альтернативная история
8.38
рейтинг книги
Весь цикл «Десантник на престоле». Шесть книг

Идеальный мир для Лекаря 4

Сапфир Олег
4. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 4

Отличница для ректора. Запретная магия

Воронцова Александра
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Отличница для ректора. Запретная магия

Сын Багратиона

Седой Василий
Фантастика:
попаданцы
альтернативная история
4.00
рейтинг книги
Сын Багратиона

Темный Лекарь 2

Токсик Саша
2. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 2

Враг из прошлого тысячелетия

Еслер Андрей
4. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Враг из прошлого тысячелетия

Русь. Строительство империи

Гросов Виктор
1. Вежа. Русь
Фантастика:
альтернативная история
рпг
5.00
рейтинг книги
Русь. Строительство империи

По воле короля

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

На границе империй. Том 9. Часть 4

INDIGO
17. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 4

Черный Маг Императора 12

Герда Александр
12. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 12

Красные и белые

Алдан-Семенов Андрей Игнатьевич
Проза:
историческая проза
6.25
рейтинг книги
Красные и белые

И только смерть разлучит нас

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
И только смерть разлучит нас