
- •Графический интерфейс пользователей
- •Объектная модель программы
- •Основной элемент графического интерфейса – окна (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()
- •Досрочный выход из цикла
Контекстное меню (ContextMenuStrip)
Появляется при нажатии правой клавиши на поверхности формы появится контекстное меню.
Элемент класса ContextMenuStrip должен быть присвоен свойству ContextMenuStrip соответствующего ЭУ.
Запомнить: при работе в режиме Design созданное контекстное меню автоматически свойству формы не присваивается. Надо вручную свойству формы ContextMenuStrip задать ссылку на созданное контекстное меню.
Создание контекстного меню
Создать элемент класса ContextMenuStrip
Задать пункты меню – элементы ToolStripMenuItem
Задать обработчики событий для пунктов меню
Присвоить ссылку на созданный объект ContextMenuStrip свойству формы ContextMenuStrip (в окне Properties для формы)
Инструментальная полоса – класс ToolStrip
Предназначена для размещения ЭУ, которые вызывают некоторые действия программы.
Обычно инструментальная полоса содержит ЭУ для быстрого выполнения команд меню.
Основные свойства класс ToolStrip
Items – коллекция ЭУ, включенных в инструментальную полосу;
Dock – прикрепление инструментальной полосы к краям формы;
RenderMode – способ отрисовки инструментальной полосы.
ЭУ для размещения в ToolStrip
ToolStripButton, ToolStripSplitButton, ToolStripLabel, ToolStripDropDownButton, ToolStripTextBox, ToolStripProgressBar, ToolStripComboBox, ToolStripSeparator.
Контейнеры для ЭУ ToolStrip
ToolStripPanel – ЭУ, который может включать несколько ЭУ ToolStrip.
ToolStripContainer – ЭУ, который включает четыре ЭУ ToolStripPanel
Класс StatusStrip
Строка состояния показывает сообщения о ходе работы программы
Для добавления к форме нужно создать экземпляр класса StatusStrip (вручную или с помощью дизайнера).
В добавленный объект могут быть вставлены объекты разных типов (ToolStripStatusLabel, ToolStripProgressBar и др.).
Типы интерфейсов приложений
SDI – single document interface
MDI – multiple document interface
Parent Form – контейнер для Child form
свойство IsMDIContainer = True
Child Form – дочернее окно, создается в клиентской области Родительского окна
свойство MdiParent = <ссылка на MDI Parent>
Создание MDI интерфейса
В родительской форме (parent form – контейнер для Child form) задается свойство:
IsMDIContainer = True
В дочерней форме (child form – дочернее окно, создается в клиентской области Родительского окна) задается свойство:
MdiParent = <ссылка на MDI Parent>
Создание дочернего окна
рrivate void mnuProd_Click(object o, EventArgs)
{
static int intCount;
intCount ++;
frmProducts frm = new frmProducts();
frm.MdiParent = this;
frm.Text = frm.Text + " " + intCount.ToString();
frm.Show();
}
Меню в MDI
Дочернее окно может иметь свое меню;
При работе с дочерним окном, меню родительского и дочернего окна объединяются (merged)
Каждый MenuItem имеют свойства MergeOrder и MergeType.
Свойство MergeOrder задает относительной позицией menu item при слиянии с родительским меню. По умолчанию значение 0, указывает, что menu item будет добавлено в конец существующих menu items.
Свойство MergeType задает, поведение menu item, если относительные позиции элементов меню при объединении совпадают.
Add – добавление к уже имеющимся элементам (по умолчанию)
MergeItems – подэлементы данного элемента объединяются с совпавшим элементом родительского меню;
Remove – элемент не добавляется
Replace – элемент заменяет элемент родительского меню.
РИСОВАНИЕ В ФОРМЕ
План работы
Класс Graphics
Инструменты рисования (Перо, Кисть, Шрифт)
Рисование фигур
Работа с изображениями
Рисование в окне
Дисплей
Устройство для отображения световых точек на поверхности экрана
Поверхность экрана содержит одну прямоугольную матрицу элементарных точек – пикселей.
Размер каждого пикселя зависит от режима работы дисплея.
Каждая точка описывается набором данных 1-4 байта
Пиксель (pixel)
Минимальный элемент изображения на дисплее (от слов picture и element).
Пиксели упорядочены в двухмерную таблицу и имеют координаты X (номер столбца) и Y (номер строки).
С каждым пикселем связан набор данных 1- 24 бит, которые задают цвет точки (bits per pixel, bpp)
1 bpp, 21 = 2 цвета (монохромный)
2 bpp, 22 = 4 цвета
3 bpp, 23 = 8 цветов
...
8 bpp, 28 = 256 цветов
16 bpp, 216 = 65,536 цветов ("Highcolor" )
24 bpp, 224 ≈ 16.8 млн. цветов ("Truecolor")
Пиксель имеет физические размеры. Обычно пиксели измеряются в
dots per inch (dpi) или
pixels per inch (ppi) (для дисплея это одно и тоже).
Разрешение дисплея
Разрешение дисплея это количество различных пикселей по каждому измерению, которые могут отображаться.
Дисплей может работать в различных режимах с разными разрешениями.
К стандартным разрешениям дисплея относятся:
Основной класс рисовния System.Windows.Drawing.Graphics
Соответствует контексту устройства операционной системы (hdc - handle of context device)
Используется для рисования на поверхности окна
Использует Graphic Device Interface + (GDI+)
Класс аргументов для события рисования в окне
При обработке события Paint вторым параметром передается объект класса PaintEventArgs
Объект PaintEventArgs содержит дополнительные данные
Graphics – ссылка на объект Graphics
ClipRectangle – испорченная прямоугольная область
Пространство имен System.Drawing
Используется библиотека GDI+ (gdiplus.dll)
Пространства имен библиотеки
Пространства имен рисования
System.Drawing – содержит большинство классов, структур, перечислений и делегатов, связанных с рисованием.
System.Drawing.Drawing2D – включает классы, поддерживающие более продвинутое 2D и векторное рисование, включая сглаживание (anti-aliasing), геометрические преобразования (transformations) и графические пути (paths)
System.Drawing.Imaging – включает различные классы, которые помогают работать с изображениями (bitmap, GIF file и т.п.)
System.Drawing.Printing – включает классы для вывода на принтер или предварительного просмотра результатов вывода на принтер;
System.Drawing.Design – включает некоторые стандартные диалоги (dialog boxes), таблицы свойств (property sheets) и другие элементы пользовательского интерфейса с расширенным интерфейсом пользователя во время пректирования.
System.Drawing.Text – содержит классы для выполнения наиболее совершенных действий с шрифтами (fonts) и семействами шрифтов (font families).