- •Графический интерфейс пользователей
- •Объектная модель программы
- •Основной элемент графического интерфейса – окна (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()
- •Досрочный выход из цикла
Операции с изображениями
Чтение из файла
string fname = "c:\\globe.gif";
Bitmap bmp = new Bitmap(fname);
// Cast to convert Image
bmp = (Bitmap)Bitmap.FromFile(fname);
Запись в файл
bmp.Save("c:\\globe.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
Рисование (gfx – объект Graphics)
Bitmap bmp = new Bitmap("C:\\globe.gif");
// Draw at coordinates 0,0
gfx.DrawImage(bmp,0,0);
Bitmap содержит данные и атрибуты пикселей составляющих графическое изображение.
Существуют разные форматы для хранения bitmap в файлах.
GDI+ поддерживает такие форматы, как: BMP, GIF, EXIG, JPG, PNG и TIFF.
Класс изображений Image
// Загружаем картинку из файла.
Image image = Image.FromFile("1.bmp");
// Создаем объект Graphics для формы.
Graphics gfx = this.CreateGraphics();
// Выводим изображение
gfx.DrawImage(image, 10, 10);
// Вписываем изображение
gfx.DrawImage(image, 0, 0,this.Width, this.Height);
Класс изображений Bitmap
Чтение из файла
string fname = "c:\\globe.gif";
Bitmap bmp = new Bitmap(fname);
// Cast to convert Image
bmp = (Bitmap)Bitmap.FromFile(fname);
Запись в файл
bmp.Save("c:\\globe.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
Рисование
Bitmap bmp = new Bitmap("C:\\globe.gif");
// Draw at coordinates 0,0; gfx – объект Graphics
gfx.DrawImage(bmp,0,0);
Работа с внешними устройствами
Устройства для поддержки графического интерфейса
Дисплей (или монитор)
Клавиатура – изобретена в 1874 году для пишущей машинки системы Ремингтон
Мышь – изобретена в 1963 году (в 1967 г. получен патент 3 541 541)
Указательное устройство «мышь»
Мышь это указательное устройство с одной или несколькими кнопками.
При передвижении мыши ОС Windows передвигает по экрану небольшую растровую картинку – курсор.
Курсор мыши имеет горячую точку (hot spot) – пиксель, задающий положение курсора на экране (например, у стрелки горячая точка – кончик стрелки). Когда говорят о позиции мыши, имеют в виду позицию горячей точки.
Щелчок мыши это нажатие и отпускание ее кнопки.
Двойной щелчок – это два щелчка выполненные через короткий промежуток времени.
Курсор мыши
Небольшая растровая картинка
Имеет горячую точку (hot spot) – пиксель, который задает точное положение курсора на экране.
Когда говорят о позиции курсора, то имеют ввиду позицию горячей точки.
Основные события устройства «мышь»
Передаются второй параметр типа EventArgs
-Click – щелчок левой кнопкой мыши или нажатие клавиши Space клавиатуры (для кнопки имеющей фокус ввода).
-MouseEnter – при перемещении курсора над формой
-MouseLeave - при уходе курсора с формы
-MouseHover – при задержке курсора над формой
Передаются второй параметр типа MouseEventArgs
-MouseClick – щелчок кнопкой мыши (вращение колеса)
-MouseDoubleClick – двойной щелчок
-MouseDown – при нажатии кнопки мыши
-MouseUp – при освобождении кнопки мыши
-MouseMove – при перемещении курсора над формой (с некоторой периодичностью).
Свойства класса MouseEventArgs
Button – задает, какая кнопка нажата
MouseButtons.Left
MouseButtons.Middle
MouseButtons.Right
Clicks – количество нажатий кнопки
X и Y – координаты курсора
Location – объект Point с X и Y;
Delta – количество щелчков колесика
Клавиатура
Набор клавиш при нажатии на которые генерируются
- Коды клавиш – условный номер клавиши на клавиатуре
- Коды символов - в соответствии с используемой системой кодирования (Unicode, ANSII). Зависит от используемой кодировочной таблицы (языка) и значения регистра (нижний или верхний)
- Каждая клавиша связанная с символом может сгенерировать 4 кода буквы. Например:
a, A, ф, Ф
q, Q, й, Й
События устройства «клавиатура»
KeyDown – при опускании клавиши (данные в KeyEventArgs)
KeyPress – нажатие клавиши с символом (KeyPressEventArgs )
KeyUp - при поднятии клавиши (данные в KeyEventArgs)
Данные о событиях нажатия и отпускания клавиши – KeyEventArgs
bool Alt – нажата ли клавиша Alt (true – да; false - нет);
bool Control – нажата ли клавиша Ctrl (true – да; false - нет);
bool Shift – нажата ли клавиша Shift (true – да; false - нет);
Keys KeyCode – виртуальный код нажатой клавиши (Keys)
bool Handled – задает - обработано или нет событие (если true, то событие обработано)
Данные о событии KeyPress – KeyPressEventArgs
- bool Handled – обработано или нет событие (если true, то событие обработано)
- char KeyChar - ASCII символ нажатой клавиши
Элементы управления (Controls)
Классы производные от базового класса System.Windows.Forms.Control.
Наследуют всю функциональность данного класса.
Типы элементов управления
Визуальные элементы управления (controls)
Компоненты (components) – не визуальные элементы управления
Некоторые базовые свойства класса System.Windows.Forms.Control
Handle – номер окна Windows
BackColor, ForeColor – фоновый цвет и цвет рисования
Left, Top, Right, Bottom – координаты точек диагонали
Height, Width – высота и ширина
Size – размер окна
ContextMenu – ссылка на контекстное меню
Cursor - ссылка на курсор
Name – имя элемента для работы системы разработки
Parent – ссылка на родительское окно
Text – заголовок
Font – используемый шрифт
Controls – список других элементов управления (если контейнер)
TabIndex – порядок перехода при нажатии клавиши Tab
Focused – имеет ли окно фокус ввода (get).
Anchor – связывание со сторонами родительской формы.
Dock – присоединение к сторонам родительской формы.
