Программирование - графический интерфейс
Программирование графического интерфейса (GUI) — это область разработки ПО, которая занимается созданием пользовательских интерфейсов с помощью графических элементов (кнопок, полей ввода, меню и других компонентов). GUI — это графическая оболочка программы, с которой пользователь взаимодействует с помощью указателя, клавиатуры или сенсорного экрана.
Некоторые концепции графического программирования:
Визуальное проектирование — визуальные инструменты позволяют создавать интерфейсы с помощью графического интерфейса, а не путём написания кода.
Интерактивность — GUI-приложения должны предоставлять возможности для взаимодействия пользователя с приложением, такие как нажатие кнопок, ввод текста и выбор опций.
Макет и компоненты — правильный выбор макета (layout) и компонентов (widgets) — основа успешного GUI-интерфейса.
Стилизация — возможность стилизовать интерфейс, чтобы он соответствовал бренду или имел определённый внешний вид.
C — в отличие от современных языков с встроенной поддержкой GUI, C требует использования специальных библиотек. Основные принципы разработки GUI на C: событийно-ориентированное программирование, использование виджетов, управление размещением, обработка ввода пользователя, отрисовка и обновление интерфейса.
-
Графический интерфейс GDI в Microsoft Windows
Интерфейс GDI избавляет приложения Windows от необходимости учитывать многие (но не все) аппаратные особенности графических устройств вывода. Например, адресация видеопамяти выполняется по-разному в видеоадаптерах CGA, EGA, VGA, SVGA и, к тому же, структура видеопамяти сильно зависит от используемого режима (подробности вы можете найти третьем томе "Библиотеки системного программиста", который называется "Программирование видеоадаптеров CGA, EGA и VGA"). Однако приложения не работают непосредственно с видеопамятью. Для того чтобы нарисовать линию или написать строку текста, приложения вызывают ту или иную функцию интерфейса GDI, реализованного в виде DLL-библиотеки. Функции GDI также не работают с аппаратурой. Для выполнения нужной графической операции GDI вызывает драйвер устройства вывода, который "знает" о всех особенностях аппаратуры.
Таким образом, с помощью GDI приложения могут организовать вывод текста и графических изображений на некоторое логическое устройство вывода. Функции GDI и драйверы обеспечивают независимость приложений от аппаратуры, поэтому правильно созданное приложение Windows будет корректно работать с любыми видеоадаптерами и принтерами, как существующими на момент разработки приложения, так и с теми, которые появятся в будущем. В этом приложения Windows имеют большое преимущество над программами MS-DOS, вынужденными для повышения производительности работать непосредственно с регистрами видеоконтроллера и видеопамятью.
Основные понятия
Контекст отображения
Вывод данных через контекст устройства
Атрибуты контекста отображения
Цвет фона
Режим фона
Режим рисования
Цвет текста
Шрифт
Расстояние между буквами
Цветовая палитра
Кисть
Начальные координаты кисти
Режим закрашивания многоугольников
Перо
Текущая позиция пера
Изображение bitmap
Режим растяжения
Область ограничения
Режим отображения
Начало системы координат для окна
Начало системы физических координат
Масштаб осей для окна
Масштаб осей физических координат
Инструменты для рисования
Перья
Линии разной ширины нарисованные с использованием различных стилей
Геометрические фигуры нарисованные с использованием различных перьев
Кисти
Геометрические фигуры закрашенные с использованием встроенных кистей
Шрифты
иллюстрирует ухудшение
Растровый векторный и
Работа с контекстом отображения
Получение и освобождение контекста отображения
Общий контекст отображения
Контекст отображения для класса окна
Личный контекст отображения
Родительский контекст отображения
Контекст отображения для окна
Контекст физического устройства
Контекст для устройства DISPLAY
Информационный контекст
Контекст для памяти
Контекст для метафайла
Функция GetDCEx
Таблица 1
Выбор режима отображения
Основные определения
Физическая система координат
Физическая система координат для экрана видеомонитора
Таблица 2
Логическая система координат
Одна из возможных систем координат
Таблица 3
Преобразование координат
Режимы отображения
Режим MM_TEXT
Система координат в режиме отображения MM_TEXT
Метрические режимы отображения
Ориентация осей сразу после переключения в метрический режим отображения
Метрическая система координат начало координат находится в левом нижнем углу окна
Метрическая система координат начало координат находится в центре окна
Режимы MM_ISOTROPIC и MM_ANISOTROPIC
Изменение масштаба по горизонтали при увеличении ширины окна в изотропном режиме
Изменение масштаба по горизонтали при увеличении высоты окна в изотропном режиме
Изменение масштаба по горизонтали при увеличении ширины окна в анизотропном режиме
Изменение масштаба по горизонтали при увеличении высоты окна в анизотропном режиме
ование геометрических фигур
Таблица 4
ование точки
ование линий
ование прямой линии
Рисование прямой линии
ование ломаной линии
Рисование ломаной линии
ование дуги эллипса
Рисование дуги эллипса
Настройка атрибутов контекста отображения для рисования линий
Выбор пера
Таблица 5
Таблица 6
Использование стилей PS_SOLID и PS_INSIDEFRAME
Закругленные концы толстой линии
Выбор режима фона
Режимы фона OPAQUE и TRANSPARENT
Выбор режима рисования
Таблица 7
ование линий произвольного стиля
ование замкнутых фигур
ование прямоугольника
Рисование прямоугольника
Прямоугольник со скругленными углами
ование эллипса
Рисование эллипса
ование сегмента эллипса
Рисование сегмента эллипса
ование сектора эллипса
Рисование сектора эллипса
ование многоугольников
Рисование многоугольника
Выбор кисти
Использование встроенной кисти
Таблица 8
Создание кисти
Таблица 9
Закрашивание внутренней области окна
Установка начальных координат кисти
Приложение LINER
Приложение LINER
Приложение REGIONS
Вывод текста с использованием области ограничения
Сохранение и восстановление контекста отображения
Приложение DASHLINE
Пунктирные линии увеличенной толщины
Битовые изображения
Битовые изображения в формате DDB
Загрузка изображений из ресурсов приложения
Чернобелое битовое изображение
ование изображения DDB
Создание изображений в памяти
Битовое изображение
Другие функции для работы с изображениями DDB
Приложение BMPLOGO
Приложение BMPLOGO
Битовые изображения в формате DIB
Форматы файлов и структур данных
Формат bmpфайлов Windows
Формат bmpфайла для Windows версии 3 х
Формат bmpфайлов Presentation Manager
Формат bmpфайла для Presentaton Manager операционной системы OS/2 версии 1 х
Биты изображения
Изображение в окне Windows
Рисование изображений DIB
Загрузка bmpфайла и проверка заголовков
Создание цветовой палитры
Рисование DIB
Преобразование DDB в DIB
Приложение BMPINFO
Главное окно приложения BMPINFO
Информация о bmpфайле
DIBSelectFile
DIBReadFile
DIBInfo
DIBType
DIBNumColors
DIBHeight
DIBWidth
DIBFindBits
DIBPaint
DIBPaintBlt
DIBCreatePalette
Шрифты
Классификация шрифтов
Рисунки символов
Выбор шрифта в контекст отображения
Выбор встроенного шрифта
Определение логического шрифта
LfHeight
LfWidth
LfEscapement
LfOrientation
LfWeight
LfItalic
LfUnderline
LfStrikeOut
LfCharSet
LfOutPrecision
LfClipPrecision
LfQuality
LfPitchAndFamily
LfFaceName
Выбор созданного шрифта в контекст отображения
Функция ChooseFont
Диалоговая панель "Font"
Приложение FONTVIEW
Вывод текста с наклоном
Вывод перевернутого текста
Получение информации о шрифте
Определение метрик шрифта
Метрики шрифта
Функция EnumFontFamilies
Работа с принтером
Контекст отображения для принтера
Функция PrintDlg
Диалоговая панель "Print"
Диалоговая панель "Print Setup"
Диалоговая панель "Options" для лазерного принтера HP LaserJet III
Диалоговая панель "Options" для матричного принтера Epson FX850
Структура PRINTDLG
LStructSize
HwndOwner
HDevMode
HDevNames
HDC
Flags
NFromPage
NToPage
NMinPage
NMaxPage
NCopies
HInstance
LCustData
LpfnPrintHook
LpfnSetupHook
LpPrintTemplateName
LpSetupTemplateName
HPrintTemplate
HSetupTemplate
Работа с функцией PrintDlg
Функции для печати
Приложение PRNFILE
Главное окно приложения PRNFILE
Литература
-
Атрибуты контекста отображения
В документации, которая поставляется в составе Microsoft SDK, описаны 20 атрибутов контекста отображения . Несколько атрибутов описывают систему координат, используемую для рисования графических изображений. Есть атрибуты, влияющие на цвет графических объектов и цвет фона. Для отображения можно выбрать цветовую палитру (набор цветов)
Основные понятия
Контекст отображения
Вывод данных через контекст устройства
Атрибуты контекста отображения
Цвет фона
Режим фона
Режим рисования
Цвет текста
Шрифт
Расстояние между буквами
Цветовая палитра
Кисть
Начальные координаты кисти
Режим закрашивания многоугольников
Перо
Текущая позиция пера
Изображение bitmap
Режим растяжения
Область ограничения
Режим отображения
Начало системы координат для окна
Начало системы физических координат
Масштаб осей для окна
Масштаб осей физических координат
Инструменты для рисования
Перья
Линии разной ширины нарисованные с использованием различных стилей
Геометрические фигуры нарисованные с использованием различных перьев
Кисти
Геометрические фигуры закрашенные с использованием встроенных кистей
Шрифты
иллюстрирует ухудшение
Растровый векторный и
Работа с контекстом отображения
Получение и освобождение контекста отображения
Общий контекст отображения
Контекст отображения для класса окна
Личный контекст отображения
Родительский контекст отображения
Контекст отображения для окна
Контекст физического устройства
Контекст для устройства DISPLAY
Информационный контекст
Контекст для памяти
Контекст для метафайла
Функция GetDCEx
Таблица 1
Выбор режима отображения
Основные определения
Физическая система координат
Физическая система координат для экрана видеомонитора
Таблица 2
Логическая система координат
Одна из возможных систем координат
Таблица 3
Преобразование координат
Режимы отображения
Режим MM_TEXT
Система координат в режиме отображения MM_TEXT
Метрические режимы отображения
Ориентация осей сразу после переключения в метрический режим отображения
Метрическая система координат начало координат находится в левом нижнем углу окна
Метрическая система координат начало координат находится в центре окна
Режимы MM_ISOTROPIC и MM_ANISOTROPIC
Изменение масштаба по горизонтали при увеличении ширины окна в изотропном режиме
Изменение масштаба по горизонтали при увеличении высоты окна в изотропном режиме
Изменение масштаба по горизонтали при увеличении ширины окна в анизотропном режиме
Изменение масштаба по горизонтали при увеличении высоты окна в анизотропном режиме
ование геометрических фигур
Таблица 4
ование точки
ование линий
ование прямой линии
Рисование прямой линии
ование ломаной линии
Рисование ломаной линии
ование дуги эллипса
Рисование дуги эллипса
Настройка атрибутов контекста отображения для рисования линий
Выбор пера
Таблица 5
Таблица 6
Использование стилей PS_SOLID и PS_INSIDEFRAME
Закругленные концы толстой линии
Выбор режима фона
Режимы фона OPAQUE и TRANSPARENT
Выбор режима рисования
Таблица 7
ование линий произвольного стиля
ование замкнутых фигур
ование прямоугольника
Рисование прямоугольника
Прямоугольник со скругленными углами
ование эллипса
Рисование эллипса
ование сегмента эллипса
Рисование сегмента эллипса
ование сектора эллипса
Рисование сектора эллипса
ование многоугольников
Рисование многоугольника
Выбор кисти
Использование встроенной кисти
Таблица 8
Создание кисти
Таблица 9
Закрашивание внутренней области окна
Установка начальных координат кисти
Приложение LINER
Приложение LINER
Приложение REGIONS
Вывод текста с использованием области ограничения
Сохранение и восстановление контекста отображения
Приложение DASHLINE
Пунктирные линии увеличенной толщины
Битовые изображения
Битовые изображения в формате DDB
Загрузка изображений из ресурсов приложения
Чернобелое битовое изображение
ование изображения DDB
Создание изображений в памяти
Битовое изображение
Другие функции для работы с изображениями DDB
Приложение BMPLOGO
Приложение BMPLOGO
Битовые изображения в формате DIB
Форматы файлов и структур данных
Формат bmpфайлов Windows
Формат bmpфайла для Windows версии 3 х
Графический интерфейс GDI в Microsoft Windows (2)
Формат bmpфайлов Presentation Manager
Формат bmpфайла для Presentaton Manager операционной системы OS/2 версии 1 х
Биты изображения
Изображение в окне Windows
Рисование изображений DIB
Загрузка bmpфайла и проверка заголовков
Создание цветовой палитры
Рисование DIB
Преобразование DDB в DIB
Приложение BMPINFO
Главное окно приложения BMPINFO
Информация о bmpфайле
DIBSelectFile
DIBReadFile
DIBInfo
DIBType
DIBNumColors
DIBHeight
DIBWidth
DIBFindBits
DIBPaint
DIBPaintBlt
DIBCreatePalette
Шрифты
Классификация шрифтов
Рисунки символов
Выбор шрифта в контекст отображения
Выбор встроенного шрифта
Определение логического шрифта
LfHeight
LfWidth
LfEscapement
LfOrientation
LfWeight
LfItalic
LfUnderline
LfStrikeOut
LfCharSet
LfOutPrecision
LfClipPrecision
LfQuality
LfPitchAndFamily
LfFaceName
Выбор созданного шрифта в контекст отображения
Функция ChooseFont
Диалоговая панель "Font"
Приложение FONTVIEW
Вывод текста с наклоном
Вывод перевернутого текста
Получение информации о шрифте
Определение метрик шрифта
Метрики шрифта
Функция EnumFontFamilies
Работа с принтером
Контекст отображения для принтера
Функция PrintDlg
Диалоговая панель "Print"
Диалоговая панель "Print Setup"
Диалоговая панель "Options" для лазерного принтера HP LaserJet III
Диалоговая панель "Options" для матричного принтера Epson FX850
Структура PRINTDLG
LStructSize
HwndOwner
HDevMode
HDevNames
HDC
Flags
NFromPage
NToPage
NMinPage
NMaxPage
NCopies
HInstance
LCustData
LpfnPrintHook
LpfnSetupHook
LpPrintTemplateName
LpSetupTemplateName
HPrintTemplate
HSetupTemplate
Работа с функцией PrintDlg
Функции для печати
Приложение PRNFILE
Главное окно приложения PRNFILE
Литература
-
Графический интерфейс GDI в Microsoft Windows (2)
Интерфейс GDI избавляет приложения Windows от необходимости учитывать многие (но не все) аппаратные особенности графических устройств вывода. Например, адресация видеопамяти выполняется по-разному в видеоадаптерах CGA, EGA, VGA, SVGA и, к тому же, структура видеопамяти сильно зависит от используемого режима (подробности вы можете найти третьем томе "Библиотеки системного программиста", который называется "Программирование видеоадаптеров CGA, EGA и VGA"). Однако приложения не работают непосредственно с видеопамятью. Для того чтобы нарисовать линию или написать строку текста, приложения вызывают ту или иную функцию интерфейса GDI, реализованного в виде DLL-библиотеки. Функции GDI также не работают с аппаратурой. Для выполнения нужной графической операции GDI вызывает драйвер устройства вывода, который "знает" о всех особенностях аппаратуры.
Основные понятия
Контекст отображения
Атрибуты контекста отображения
Цвет фона
Режим фона
Режим рисования
Цвет текста
Шрифт
Расстояние между буквами
Цветовая палитра
Кисть
Начальные координаты кисти
Режим закрашивания многоугольников
Перо
Текущая позиция пера
Изображение bitmap
Режим растяжения
Область ограничения
Режим отображения
Начало системы координат для окна
Начало системы физических координат
Масштаб осей для окна
Масштаб осей физических координат
Инструменты для рисования
Перья
Кисти
Шрифты
Битовые изображения
Работа с контекстом отображения
Получение и освобождение контекста отображения
Общий контекст отображения
Контекст отображения для класса окна
Личный контекст отображения
Родительский контекст отображения
Контекст отображения для окна
Контекст физического устройства
Контекст для устройства DISPLAY
Информационный контекст
Контекст для памяти
Контекст для метафайла
Функция GetDCEx
Выбор режима отображения
Основные определения
Физическая система координат
Логическая система координат
Преобразование координат
Режимы отображения
Режим MM_TEXT
Метрические режимы отображения
Режимы MM_ISOTROPIC и MM_ANISOTROPIC
ование геометрических фигур
ование точки
ование линий
ование прямой линии
ование ломаной линии
ование дуги эллипса
Настройка атрибутов контекста отображения для рисования линий
Выбор пера
Выбор режима фона
Выбор режима рисования
ование линий произвольного стиля
ование замкнутых фигур
ование прямоугольника
ование эллипса
ование сегмента эллипса
ование сектора эллипса
ование многоугольников
Выбор кисти
Использование встроенной кисти
Создание кисти
Закрашивание внутренней области окна
Установка начальных координат кисти
Приложение LINER
Области
Создание области
Прямоугольная область
Область в виде многоугольника
Область эллиптической формы
Комбинирование областей
Перерисовка области
Другие операции
Закрашивание области
Приложение REGIONS
Сохранение и восстановление контекста отображения
Приложение DASHLINE
Цвет и цветовые палитры
Системная цветовая палитра
Выбор цвета без использования палитры
Как указать цвет
Системные цвета
Сообщение WM_SYSCOLORCHANGE
Функция ChooseColor
Приложение GETCOLOR
Использование цветовых палитр
Механизм реализации логической палитры
Проверка возможности использования палитры
Создание логической палитры
Выбор палитры в контекст отображения
Реализация палитры
ование с использованием палитры
Удаление палитры
Сообщения об изменении палитры
Сообщение WM_QUERYNEWPALETTE
Сообщение WM_PALETTECHANGED
Приложение PALETTE
Приложение SYSPAL
Графический интерфейс GDI в Microsoft Windows
Битовые изображения в формате DDB
Загрузка изображений из ресурсов приложения
Рисование изображения DDB
Создание изображений в памяти
Другие функции для работы с изображениями DDB
Приложение BMPLOGO
Битовые изображения в формате DIB
Форматы файлов и структур данных
Формат bmp-файлов Windows
Формат bmp-файлов Presentation Manager
Биты изображения
Рисование изображений DIB
Загрузка bmp-файла и проверка заголовков
Создание цветовой палитры
Рисование DIB
Преобразование DDB в DIB
Приложение BMPINFO
DIBSelectFile
DIBReadFile
DIBInfo
DIBType
DIBNumColors
DIBHeight
DIBWidth
DIBFindBits
DIBPaint
DIBPaintBlt
DIBCreatePalette
Классификация шрифтов
Выбор шрифта в контекст отображения
Выбор встроенного шрифта
Определение логического шрифта
LfHeight
LfWidth
LfEscapement
LfOrientation
LfWeight
LfItalic
LfUnderline
LfStrikeOut
LfCharSet
LfOutPrecision
LfClipPrecision
LfQuality
LfPitchAndFamily
LfFaceName
Выбор созданного шрифта в контекст отображения
Функция ChooseFont
Приложение FONTVIEW
Получение информации о шрифте
Определение метрик шрифта
Функция EnumFontFamilies
Работа с принтером
Контекст отображения для принтера
Функция PrintDlg
Структура PRINTDLG
LStructSize
HwndOwner
HDevMode
HDevNames
HDC
Flags
NFromPage
NToPage
NMinPage
NMaxPage
NCopies
HInstance
LCustData
LpfnPrintHook
LpfnSetupHook
LpPrintTemplateName
LpSetupTemplateName
HPrintTemplate
HSetupTemplate
Работа с функцией PrintDlg
Функции для печати
Приложение PRNFILE
Литература