- •Графический интерфейс пользователей
- •Объектная модель программы
- •Основной элемент графического интерфейса – окна (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()
- •Досрочный выход из цикла
Система координат. Система координат и единиц измерения
Система координат для задания положения и размеров ЭУ, основывается на координатах устройства и основной единицей измерения при рисовании является пиксель (pixel) – наименьший логический элемент двумерного цифрового изображения в растровой графике.
Растровое компьютерное изображение состоит из пикселей, расположенных по строкам и столбцам. Точки экрана описываются парами координат (x, y), где координата x увеличивается слева на право, а координата y увеличивается сверху вниз.
Размещение начала координат зависит от того, задаются ли экранные координаты (координаты экрана) или клиентские координаты (координаты клиентской области окна родителя).
Экранные координаты задают позицию окна на экране дисплея и их началом является верхний – левый угол экрана. Полное положение окна задается структурой Rectangle, содержащей экранные координаты двух точек, определяющих верхний – левый и правый – нижний углы окна.
Клиентские координаты задают положение точки в клиентской области окна. Их начальной точкой является верхний – левый угол клиентской области формы или ЭУ.
Классы для описания геометрических объектов
Для работы с координатами и размерами ЭУ используются определенные в библиотеке FCL структуры
Point, PointF, (поля X и Y)
Size, SizeF (поля Height и Width)
Rectangle (поля X , Y, Height и Width).
Структуры Point и Size позволяют задать прямоугольную область – структуру Rectangle. Конструктору прямоугольника можно передать в качестве аргументов две структуры – точку, задающую координаты левого верхнего угла прямоугольника, и размер – высоту и ширину прямоугольника.
Класс Point – точка (x,y) (PointF)
Point pt = new Point (100,75);
Класс Size – размер (длина ширина) (SizeF)
Size sz = new Size (60,100);
Класс Rectangle – прямоугольник (RectangleF) -верхний угол, длина, ширина
Rectangle rec = new Rectangle(new Point(50,70),new Size(40,40));
координаты левого верхнего и правого нижнего угла
Rectangle rec = new Rectangle(x, y, width, height);
Изменение системы координат
Перенос центра системы
gfx.TranslateTransform(x, y);
Поворот системы кооординат
gfx.RotateTransform(угол в градусах);
Изменение единиц измерения
gfx.PageUnit = GraphicsUnit.Millimeter;
Задание масштаба
gfx.PageScale = 2F; // увеличить в 2 раза
gfx.PageScale = 0.5F; // уменьшить в 2 раза
Перечисление единиц измерения GraphicsUnit
GraphicsUnit.Pixel – пиксели (по умолчанию)
GraphicsUnit.Point – поинты (1/72 дюйма)
GraphicsUnit.Inch – дюйм (2.54 см)
GraphicsUnit.Document – 1/300 дюйма
GraphicsUnit.Millimeter – миллиметр
Классы инструментов рисования
Color – цвет пикселя.
Pen – перо, описывает шаблон линии.
Brush – кисть, описывает шаблон заполнителя замкнутых фигур.
Font – шаблон шрифта для вывода символов.
Класс Color (цвет)
Статический класс имеет 140 различных статических цветов
Статический метод создания нового цвета – комбинация (red, green, blue)
Color.FromArgb (int red, int green, int blue);
Красный цвет: red = 0 - 255;
Зеленый цвет: green = 0 – 255;
Синий цвет: blue = 0 – 255;
Color.FromArgb (int a, int red, int green, int blue);
а – прозрачность.
Класс Pen (перо)
Статический класс Pens – перья всех стандартных цветов.
Можно создать свое перо
Pen pen = new Pen(color);
Pen (Color color);
Pen (Color color, float width);
Основные свойства класса Pen:
DashStyle для задания стиля линии - Solid, Dot, Dash, DashDot, DashDotDot, custom (System.Drawing.Drawing2D.DashStyle)
Color - цвет
Width - ширина
Кисть Brush (кисть)
Статический класс Brushes – кисти всех стандартных цветов
Можно создавать свои кисти
Класс SolidBrush – одноцветная кисть
Класс HatchBrush – с геометрическим, регулярным рисунком
Класс TextureBrush – кисть с произвольным заданным рисунком
Класс LinearGradientBrush – с градиентной заливкой
Класс Font (шрифт)
Шрифт – способ рисования символов.
Типы шрифтов
Растровые
Векторные
Контурные – TrueType
При выводе текста нужно указывать используемый шрифт.
В ОС устанавливаются семейства (шаблоны) шрифтов. На их основе создаются конкретные шрифты.
Методы рисования
Рисование текста
Рисование линий
Рисование фигур
Класс StringFormat
Класс для задания положения строки в прямоугольной области
StringFormat sf = new StringFormat();
Основные свойства:
Положение по горизонтали
sf.Alignment = StringAlignment.Near (слева), Center (по центру), Far (справа)
Положение вертикали
sf.LineAlignment = StringAlignment.Near (сверху), Center (по центру), Far (снизу)
Измерение размера текста
Для определения размеры выводимого текста используется метод класса Graphics: MeasureString(str, Font)
Например:
Sizef s = gfx.MeasureString(str, Font);
Рисование текста под углом
Устанавливаем начало координат в точку (x, y).
gfx.TranslateTransform(x, y);
Поворот системы кооординат
gfx.RotateTransform(угол в градусах)
Рисование линий
DrawLine(Pen pn, Point pt1, Point pt2);
DrawLine(Pen pn, int x, int y, int x1, int y1);
DrawLines(Pen pn, Point [] pt);
Рисование фигур
DrawRectangle(…) – рисование прямоугольника
DrawEllipse(…) – рисование эллепса
DrawCurve(…) – рисование кривой
DrawPoligon(…) – рисование многоугольника
DrawPie(…) – рисование сектора круга
Закраска фигур
FillRectangle(…), FillEllipse(…), FillPoligon(…), FillPie(…).
Работа с изображениями
Пространство имен System.Drawing.Imaging
Основные классы
- Image – абстрактный базовый класс для Bitmap. Имеет набор методов для чтения и записи изображений из файлов
- Bitmap - основной класс для создания изображения в оперативной памяти.
- Поддерживаемые графические форматы:
- Bitmaps (BMP),
- Graphics Interchange Format (GIF),
- Joint Photographic Experts Group (JPEG),
- Portable Network Graphics (PNG),
- Tag Image File Format (TIFF).
