- •Графический интерфейс пользователей
- •Объектная модель программы
- •Основной элемент графического интерфейса – окна (windows)
- •Отношения между окнами
- •Типы окон
- •Программирование графического интерфейса (gui)
- •Содержание окна
- •Контекстное меню (ContextMenuStrip)
- •Библиотека api функций для рисования gdi32.Dll
- •Основной класс рисования Graphics
- •Основные методы класса Graphics
- •Получение объекта Graphics
- •Событие Paint
- •Выполнение рисования
- •Система координат. Система координат и единиц измерения
- •Классы для описания геометрических объектов
- •Операции с изображениями
- •Курсор мыши
- •Основные события устройства «мышь»
- •Размер окна
- •Свойство Anchor
- •Компоненты
- •Элементы управления для работы с принтером – Printing
- •Автоматизация создания программы
- •Окно списков ListBox
- •Коллекция элементов ListBox
- •Комбинированные окна ComboBox
- •Элемент CheckedListBox
- •Класс PictureBox
- •Элемент управления WebBrowser
- •Элемент управления ProgressBar
- •Элемент NumericUpDown
- •Подсказки – ToolTip
- •Процессы и потоки
- •Виды многопоточности:
- •Преимущества многопоточности
- •Случаи использования многопоточности:
- •Потоки в с#
- •Основные статические свойства:
- •Недостатки многопоточности
- •Методы управления потоками
- •Свойства потока.
- •Приоритеты потоков
- •Передача данных в ThreadStart
- •Управление потоками
- •Ресурсы, требующие синхронизации:
- •Простейшие методы блокировки.
- •Оператор lock
- •Класс Interlocked
- •Класс Monitor
- •Классы ManualResetEvent и AutoResetEvent
- •Атрибут [Synchronization]
- •Константы:
- •Минимально необходимые действия для использования BackgroundWorker:
- •Чтобы добавить отображение выполнения операции:
- •Чтобы иметь возможность отмены операции:
- •Задачи (класс Task)
- •Статусы задачи
- •Применение идентификатора задачи
- •Методы ожидания завершения задачи
- •Класс TaskFactory
- •Работа с данными в задаче
- •Вложенные задачи.
- •Механизм отмены задач.
- •Создание продолжения задачи
- •Шаблоны параллелизма Parallel
- •Метод For()
- •Досрочный выход из цикла
Содержание окна
В окне могут размещаться:
текст;
рисунки (схемы, карты, изображения);
другие окна (элементы управления);
Сообщения операционной системы
ОС оповещает окна о всех событиях, которые происходят на компьютере с помощью сообщений (messages).
Для каждой прикладной программы (application) с GUI создается очередь сообщений – message queue.
В эту очередь ОС отправляет все сообщения:
о изменении окна (Constructor; Load; Activated; Closing; Closed);
о изменении в работе ОС;
о выборе пользователем команд меню или нажатии кнопок в инструментальной полосе;
о действиях пользователя с «мышью» и клавиатурой;
и т.д.
В программе сообщения преобразуются в события.
Сообщения обо всех операциях пользователей, с мышью и клавиатурой, получает окно, которое имеет фокус ввода.
Сообщения отправляются в очередь сообщений того приложения, которому данное окно принадлежит.
Фокус ввода переключается: щелчком мыши в нужном окне, нажатием клавиши табуляции Tab.
Технологии разработки GUI в .Net Framework
В настоящее время существует две основные технологии разработки GUI в платформе .Net Framework:
System.Windows.Forms
Windows Presentation Foundation (WPF)
Графический интерфейс форм
План работы
Основные элементы интерфейса окна программы.
Меню
Инструментальные полосы.
Полосы состояния.
Типы окон программы
Приложение (прикладная программа - application) включает набор окон (Form)
Типы окон: Основное окно, Диалоги, Стандартные, Специальные
Элементы интерфейса основного окна
Основные элементы интерфейса формы приложения:
- Меню – иерархически организованный набор команд, которые может выполнить приложение.
- Инструментальные полосы – наборы графических элементов (иконок), которые позволяют выполнить команды приложения (дублируют пункты меню).
- Полоса состояния – набор ЭУ для отображения хода выполнения приложением различных задач.
Множество элементов ToolStrip
Предоставляют общие возможности для создания интерфейса пользователя в Windows Form [ToolStrip, MenuStrip, ContextMenuStrip, StatusStrip,ToolStripDropDown ]
Они предоставляют множество возможностей во время проектирования (Design mode) и во время выполнения (Run-time mode).
Класс ToolStripItem
- ToolStripItem это абстрактный базовый класс для всех элементов, которые могут размещаться в ToolStrip.
- Класс ToolStrip управляет рисованием, работой с клавиатурой и мышью этих элементов.
- Класс ToolStripItem управляет событиями и размещением элементов.
Работа с меню. Меню.
Один из основных интерфейсов программы.
Разные виды меню в программе:
Главное меню – MenuStrip
Контекстное меню – ContextMenuStrip
У формы есть свойства
MainMenuStrip – нужно присвоить ссылку на объект класса MenuStrip
ContextMenuStrip – нужно присвоить ссылку на объект класса ContextMenuStrip
Класс MenuStrip
Для показа на форме ссылка на объект MenuStrip должна быть присвоена свойству формы MainMenuStrip
Свойство Items() - коллекция пунктов меню:
- ToolStripMenuItem
- ToolStripComboBox
- ToolStripTextBox
- ToolStripSeparator
Класс пунктов меню ToolStripMenuItem
Свойства
Text – название пункта меню
DropDownItems() – коллекция пунктов меню
Checked – ставить ли метку у этого пункта
Enabled – активный ли пункт меню
Shortcut – горячие клавиши для вызова
События
Click (при щелчке по пункту меню)
Popup (перед показом данного пункта меню)
Select (курсор находится над пунктом меню)
Задание обработчика пункта меню
Создание нового пункта с заданным названием и обработчиком события Click.
ToolStripMenuItem miClose = new ToolStripMenuItem()
miClose.Text = "Close“;
miClose.Close += new EventHandler(CloseOnClick))
. . .
public void CloseOnClick(object o, EventArgs e)
{ frm.Close(); }
Задние пунктов подменю
- Подменю – массив пунктов меню.
- Создание нового пункта с заданным названием и массивом пунктов подменю (подменю).
Пример: создание пункта меню “File”, который показывает подменю с двумя пунктами (“New”, “Close”)
MenuStripItem miFile = new MenuStripItem( );
miFile.Text = “File“;
// добавляем по пунктам
miFile.DropDownItems.Add(miNew);
miFile.DropDownItems.Add(miClose);
// или создаем и инициализируем массив пунктов меню
miFile.DropDownItems.AddRange
(new MenuStripItem[ ] {miNew, miClose} );
