
- •Основы программирования
- •Введение
- •Основы delphi
- •Общая технология программирования
- •Язык программирования
- •Объектно-ориентированное программирование
- •Визуальное программирование
- •Событийно управляемое программирование
- •Windows-приложение
- •Среда программирования
- •Первоначальные сведения о проекте приложения
- •Встроенный отладчик
- •Использование встроенных классов
- •Иерархия классов
- •Использование палитры компонентов и инспектора объектов
- •Использование графики
- •Основные инструменты
- •Основные характеристики шрифтов
- •Графические данные и палитра
- •Некоторые общие свойства компонентов
- •Сохранение проекта
- •Построение простейшего проекта
- •Понятие исключительной ситуации
- •Введение в object pascal
- •Структура приложения
- •Структура программы-проекта
- •Структура модуля
- •Пример 1
- •Описания программных элементов
- •Программные элементы и адреса памяти
- •Области видимости
- •Правила записи имен
- •Время жизни идентификаторов
- •Использование локальных переменных в примере 1
- •Использование глобальных переменных в примере 1
- •Простые типы
- •Целые типы
- •Целые типы
- •Некоторые операции с целым типом
- •Символьные типы
- •Логические типы
- •Тип перечень
- •Интервальный тип
- •Вещественный тип
- •Вещественные типы
- •Некоторые операции с вещественным типом
- •Тип дата-время
- •Выражения
- •Константы
- •Типизированные константы.
- •Переменные
- •Операции
- •Унарная операция not (отрицание)
- •Логические операции and, or, xor
- •Функции
- •Порядок вычисления выражений
- •Виды операторов
- •Простые операторы
- •Составной оператор
- •Операторы условного перехода
- •Оператор if
- •Пример 2
- •Оператор case
- •Пример 3
- •Использование enter в примере 3
- •Операторы цикла
- •Оператор цикла for
- •Пример 4
- •Оператор цикла while
- •Пример 5
- •Оператор цикла repeat
- •Пример 6
- •Использование процедур break и continue
- •Пример 7
- •Массивы
- •Статические массивы
- •Динамические массивы
- •Пример 8
- •Пример 9
- •Записи (объединения)
- •Оператор with
- •Пример 10
- •Совместимость и преобразование типов данных
- •Идентичность типов
- •Совместимость типов
- •Совместимость по присваиванию
- •Преобразование типов
- •Операторы обработки исключительных ситуаций
- •Пример 11
- •Множества
- •Операции над множествами
- •Пример 12
- •Вариантный тип данных
- •Процедуры и функции
- •Процедура
- •Функция
- •Рекурсия
- •Формальные и фактические параметры
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •Параметры без типа
- •Массивы открытого типа
- •Парамеры по умолчанию
- •Процедура exit
- •Директивы подпрограммы
- •Соглашения по передаче данных
- •Директива forward
- •Директива external
- •Директива assembler
- •Перегруженные подпрограммы
- •Пример 13
- •Инкапсуляция
- •Класс как объектный тип
- •Наследование
- •Области видимости
- •Операции is и as
- •Виды методов
- •Методы virtual и полиморфизм
- •Методы dynamic
- •Методы message
- •Методы abstract
- •Методы override
- •Методы class
- •Пример 14
- •Динамическое создание компонентов
- •Использование класса со счетчиком объектов
- •Отслеживание разрушения объектов
- •События
- •Указатели на методы
- •Пример 15
- •Типы ссылки на класс
- •Свойства
- •Свойства simple
- •Свойства enumerated
- •Свойства set
- •Свойства object
- •Свойства array
- •Задание начальных значений свойствам
- •Пример 16
- •Файловые типы
- •Текстовые файлы
- •Типизированные файлы
- •Файлы без типа
- •Дополнительные процедуры и функции
- •Пример 17
- •Компонент tmainmenu
- •Указатели
- •Пример 18
- •Динамические структуры данных
- •Однонаправленные списки
- •Двунаправленные списки
- •Стеки, очереди
- •Бинарные деревья
- •Пример 19
- •Процедурный тип
- •Программные единицы dll
- •Пример 20
- •Технологии программирования
- •Потоки данных
- •Пример 21
- •Пример 22
- •Интерфейс drag and drop
- •Пример 23
- •Технология drag and dock
- •Пример 24
- •Использование функций windows api при работе с файлами
- •Пример 25
- •Использование отображаемых файлов
- •Пример 26
- •Программные потоки
- •Приоритеты потоков
- •Класс tthread
- •Пример 27
- •Использование блокировки в примере 27
- •Многопоточное приложение в примере 28
- •Проблемы синхронизации потоков
- •Список используемых в примерах компонентов
- •Список используемых компонентов и других классов
- •Библиографический список
- •Оглавление
Графические данные и палитра
Традиционно графические данные подразделяются на два типа: векторные и растровые.
В компьютерной графике векторные данные обычно используются для представления прямых, многоугольников, кривых (или любых объектов, созданных на их основе) с помощью определённых в численном виде контрольных ключевых точек. Программа воспроизводит линии посредством соединения ключевых точек. С векторными данными всегда связаны информация об атрибутах (цвете, толщине линий) и набор соглашений (или правил), позволяющих программе начертить требуемые объекты. Понятие вектор в данном случае определяет отрезок линии.
Растровые данные представляют набор числовых значений, определяющих цвета отдельных точек, расположенных на правильной сетке и формирующих образ. Таким образом, растр (bitmap) – это массив точек, заданный с помощью массива числовых значений окраски отображаемого образа. Очень часто числовые значения (три числа (или четыре) на один пиксел), задающие тот или иной пиксел в растровой картинке, называют просто пикселом.
Количество возможных цветов (глубину цвета) пиксела определяет битовая глубина. Однобитовый пиксел может быть одного из двух цветов, четырёхбитовый – одного из 16 и т. д. На сегодняшний день, в основном, используется глубина цвета в 24 и 32 бита (возможны варианты в 1, 2, 4, 8, 15, 16 бит).
Изображения в растровом формате представляют собой набор точек, организованных в виде последовательности строк, называемых строками развертки. Значения в формате представления (например, записанные в файл) точек растра обычно упорядочены таким образом, чтобы их легко можно было отобразить практически на любом растровом устройстве.
Чтобы передать цвет, нужно задать несколько значений (обычно три), определяющих интенсивность каждого из основных цветов (цветовых каналов), которые смешивают для получения составных цветов. Конкретный цвет представляет собой точку в цветовом пространстве.
Наиболее распространённым способом передачи цвета является модель RGB. В этой модели основными являются цвета: красный (Red), зелёный (Green) и синий (Blue). Цвет задаётся посредством RGB-триплета. Каждый пиксел физически определяется триадой веществ. Обычно используются окислы: цинка (зеленый), меди (синий), европия (красный). При сохранении цветовых данных в файле триплет записывают в виде чисел. Если глубина цвета равна 24 бита, например, по 8 бит на каждый основной цвет, то диапазон значений цвета для каждого байта равен 0…255. Причём, чаще всего, принимается, что пикселные значения (0, 0, 0) соответствуют чёрному цвету, (255, 255, 255) – белому, (255, 0, 0) – красному, а, например, триплет (127, 127,127) определяет один из вариантов серого. Таким образом, теоретически данная схема описывает около 16,7 миллионов составных цветов.
Довольно часто набор цветов, который задаётся в файле, отличается от того, который может быть отображён на конкретном устройстве. Задача согласования наборов цветов обычно решается программой визуализации, которая осуществляет преобразование цветов, заданных в файле, в цвета устройства отображения. Если количество цветов, заданных пикселными значениями в файле, меньше количества цветов, которое может отображать устройство вывода, то проблем обычно не возникает, в противном случае - происходит потеря данных, и могут появиться нежелательные эффекты. В любом варианте программа визуализации должна выполнить определённую работу, сопоставляя наборы цветов источника и адресата.
Значения триплета непосредственно передаются устройству отображения. При записи этих значений в файл может осуществляться кодировка с помощью палитр. Палитра представляет собой одномерный массив цветовых величин. С помощью палитры цвета задаются косвенно посредством указания их позиций (индексов) в массиве. Это позволяет сократить объём файлов. Например, 4-битовые пиксельные данные могут использоваться для представления изображений, содержащих 16 цветов. Определив для этих 16 цветов палитру, данные в файл записываются в виде чисел из диапазона 0…15. Программа визуализации, читая данные из файла, перекодирует их в соответствии с палитрой в триплеты, которые и используются для окрашивания точек на устройстве вывода. При глубине цвета 24 и выше палитра не используется.
В настоящее время часто используется глубина цвета в 32 бита. Данный режим работы графического устройства похож на режим в 24 бита, но в нем добавлен четвертый 8-битовый канал (альфа-канал), содержащий дополнительную информацию о прозрачности каждой точки. Существует режим pfCustom, предназначенный для реализации программистом собственных конструкций.