поверхность на которую можно вывести графику

Сайт учителя информатики

Февраль 2019

ПнВтСрЧтПтСбВс
123
45678910
11121314151617
18192021222324
25262728

поверхность на которую можно вывести графику поверхность на которую можно вывести графику поверхность на которую можно вывести графику поверхность на которую можно вывести графику поверхность на которую можно вывести графику поверхность на которую можно вывести графику поверхность на которую можно вывести графику поверхность на которую можно вывести графику поверхность на которую можно вывести графику поверхность на которую можно вывести графику

поверхность на которую можно вывести графику

поверхность на которую можно вывести графику

поверхность на которую можно вывести графику

поверхность на которую можно вывести графику

поверхность на которую можно вывести графику

поверхность на которую можно вывести графику

поверхность на которую можно вывести графику

Lazarus. Урок № 3.

Урок 3. Компонент TImage.

В этом уроке Вы познакомитесь с назначением и основными свойствами компонента Lazarus Image, создадите два проекта с его использованием.

поверхность на которую можно вывести графику

поверхность на которую можно вывести графику

Компонент (TImage) обеспечивает вывод на поверхность формы иллюстраций, представленных в bmp–формате (чтобы компонент можно было использовать для отображения иллюстраций в формате JPG, надо подключить модуль JPEG – указать имя модуля в директиве uses).

Вы можете присвоить какой-либо рисунок компоненту Image как при разработке в среде Lazarus, так и во время выполнения. В этом уроке мы рассмотрим оба случая.

Для загрузки рисунка в поле Image на этапе разработки интерфейса приложения нужно присвоить свойству Picture файл, содержащий рисунок.

Для присвоения изображению файла с рисунком во время выполнения приложения используется метод LoadFromFile(), принадлежащий объекту Picture.

Например, для вывода в изображение imgIxample файла рисунка myPicture.jpg во время выполнения используется следующий оператор:

Задание 7

Создайте приложение «Вставка рисунка из файла», в результате работы которого левый рисунок будет отображаться на форме после ее загрузки, а правый – по щелчку на кнопке Вывести рисунок.

поверхность на которую можно вывести графику

Картинки для выполнения задания:

поверхность на которую можно вывести графикуповерхность на которую можно вывести графику

Сохранить их как файлы на вашем компьютере.

Ход выполнения

Разместите на форме два изображения Image (вкладка Additional), две надписи (Label) и две кнопки (Button).

Значение свойства AutoSize для изображения установить True, чтобы размеры поля изображения автоматически изменялись, подстраивались под размеры рисунка.

поверхность на которую можно вывести графику

поверхность на которую можно вывести графику

procedure TForm1.Button2Click(Sender: TObject);

Программный код процедуры:

procedure TForm1.Button2Click(Sender: TObject);

Для управления видимостью кнопок используйте свойство Visible.

Исходный текст процедуры:

procedure TForm1.Button3Click(Sender: TObject);

поверхность на которую можно вывести графику

Задание 8

Создайте приложение, которое над рисунком, расположенным в центре формы, выполняет действия, указанные на кнопках.

поверхность на которую можно вывести графику

Ход выполнения

Напомню. Для того чтобы создать процедуру обработчик события, идущий по умолчанию, нужно выполнить двойной щелчок на элементе управления.

procedure TForm1.btnVverh_VlevoClick(Sender: TObject);

procedure TForm1.btnVverh_VpravoClick(Sender: TObject);

procedure TForm1.btnCentrClick(Sender: TObject);

image1.top:=(form1.height-image1.height) div 2;

image1.left:=(form1.width-image1.width) div 2;

Источник

Презентация была опубликована 9 лет назад пользователемborschool8.ru

Похожие презентации

Презентация на тему: » Delphi Pascal. Поверхности, на которую программа может выводить графику, соответствует свойство Canvas. Размер холста можно получить, обратившись к свойствам.» — Транскрипт:

2 Поверхности, на которую программа может выводить графику, соответствует свойство Canvas. Размер холста можно получить, обратившись к свойствам Height и width области иллюстрации (image) или к свойствам формы: ClientHeight=348 и Clientwidth=536.

3 Полотно состоит из точек (пикселов), каждая из которых имеет свои координаты и цвет. 0,0 Х У

4 Font – определяет шрифт, который будет использоваться для вывода текста на экран Pen – определяет тип пера канвы, которым будут рисоваться линии и геометрические фигуры Brush – определяет цвет и образец кисти, которой будут заполняться графические объекты и фон PenPos –определяет текущую позицию пера

5 Brush.Color – задает цвет, Brush.Style – задает шаблон, может принимать следующие значения: bsSolid – сплошная заливка bsClear – пустая заливка bsBDiagonal – диагональные линии (нижний левый – правый верхний) bsFDiagonal – диагональные линии (нижний правый – верхний левый) bsCross – прямая решетка bsDiagCross – диагональная решетка bsHorizontal – горизонтальные линии bsVertical – вертикальные линии

7 Цвет можно также задать, указав числовые значения в RGB(к,з,с) Например, Form.Canvas.Brush.Color:=RGB(88,87,104)

8 Константа Тип заполнения (заливки) области bsSolid Сплошная заливка bsClear Область не закрашивается bsHorizontal Горизонтальная штриховка bsVertical Вертикальная штриховка bsFDiagonal Диагональная штриховка с наклоном линий вперед bsBDiagonal Диагональная штриховка с наклоном линий назад bsCross Горизонтально-вертикальная штриховка, в клетку bsDiagCross Диагональная штриховка, в клетку

10 Pixels(x,y) – рисует точку с координатами х, у Например, инструкция Form1.Canvas.Pixels[10,10]:=clRed окрашивает точку поверхности формы в красный цвет.

13 Фигура эллипса (круга) оказывается вписанной в прямоугольник (квадрат) с вершинами – левой верхней x1, y1 и правой нижней x2, y2.

14 Arc(x1,y1,х2,у2,х3,у3,х4,у 4), где x1, y1, х2, у2 параметры, определяющие эллипс (окружность), частью которого является вычерчиваемая дуга; х3, у3 параметры, определяющие начальную точку дуги; П х4, у4 параметры, определяющие конечную точку дуги.

20 Name Используемый шрифт. В качестве значения следует использовать название шрифта, например Arial Size Размер шрифта в пунктах (points). Пункт это единица измерения размера шрифта, используемая в полиграфии. Один пункт равен 1/72 дюйма Style стиль начертания символов. Может быть: нормальным, полужирным, курсивным, подчеркнутым, перечеркнутым. Стиль задается при помощи следующих констант: fsBold (полужирный), fsltalic (курсив), f sUnderline (подчеркнутый), f sStrikeOut (перечеркнутый).

Источник

Иллюстрированный самоучитель по C++ Builder

Иллюстрации

Наиболее просто вывести иллюстрацию, которая находится в файле с расширением .bmp, .jpg или .ico, можно при помощи компонента image, значок которого находится на вкладке Additional палитры компонентов (рис. 3.9). Основные свойства компонента приведены в табл. 3.5.

поверхность на которую можно вывести графику
Рис. 3.9. Значок компонента Image

Таблица 3.5. Свойства компонента image.

СвойствоОписание
PictureИллюстрация, которая отображается в поле компонента
Width, HeightРазмер компонента. Если размер компонента меньше размера иллюстрации и значение свойств AutoSize, Strech и Proportional равно false, то отображается часть иллюстрации
ProportionalПризнак автоматического масштабирования картинки без искажения. Чтобы масштабирование было выполнено, значение свойства AutoSize должно быть false
StrechПризнак автоматического масштабирования (сжатия или растяжения) иллюстрации в соответствии с реальным размером компонента. Если размер компонента не пропорционален размеру иллюстрации, то иллюстрация будет искажена
AutoSizeПризнак автоматического изменения размера компонента в соответствии с реальным размером иллюстрации
CenterПризнак определяет расположение картинки в поле компонента по горизонтали, если ширина картинки меньше ширины поля компонента. Если значение свойства равно false, то картинка прижата к правой границе компонента, если true – то картинка располагается по центру
VisibleПризнак указывает, отображается ли компонент и, соответственно, иллюстрация на поверхности формы
CanvasПоверхность, на которую можно вывести графику

Иллюстрацию, которая будет выведена в поле компонента image, можно задать как во время разработки формы приложения, так и во время работы программы.

Во время разработки формы иллюстрация задается установкой значения свойства Picture путем выбора файла иллюстрации в стандартном диалоговом окне, которое становится доступным в результате щелчка на командной кнопке Load окна Picture Editor, которое, в свою очередь, появляется в результате щелчка на кнопке с тремя точками в строке свойства picture (рис. 3.10).

поверхность на которую можно вывести графику
Рис. 3.10. Чтобы выбрать иллюстрацию, щелкните в строке Picture на кнопке стремя точками, затем в окне Picture Editor – на кнопке Load

Источник

Учебники. Программирование для начинающих.

Все для начинающего программиста

Меню сайта

Информация

Программирование — в обычном понимании, это процесс создания компьютерных программ.
В узком смысле (так называемое кодирование) под программированием понимается написание инструкций — программ — на конкретном языке программирования (часто по уже имеющемуся алгоритму — плану, методу решения поставленной задачи). Соответственно, люди, которые этим занимаются, называются программистами (на профессиональном жаргоне — кодерами), а те, кто разрабатывает алгоритмы — алгоритмистами, специалистами предметной области, математиками.
В более широком смысле под программированием понимают весь спектр деятельности, связанный с созданием и поддержанием в рабочем состоянии программ — программного обеспечения ЭВМ. Более точен современный термин — «программная инженерия» (также иначе «инженерия ПО»). Сюда входят анализ и постановка задачи, проектирование программы, построение алгоритмов, разработка структур данных, написание текстов программ, отладка и тестирование программы (испытания программы), документирование, настройка (конфигурирование), доработка и сопровождение.

Компоненты

Image

Компонент image (рис. 2.10) обеспечивает вывод на поверхность формы иллюстраций, представленных в bmp-формате (чтобы компонент можно было использовать для отображения иллюст раций в формате JPG, надо подключить модуль jpeg — указать имя модуля в директиве uses). Свойства компонента image при ведены в табл. 2.11. Image

поверхность на которую можно вывести графику

Рис. 2.10. Компонент Image

Таблица 2.11. Свойства компонента image

Иллюстрация, которая отображается в поле компонента

Размер компонента. Если размер компонентаменьше размера иллюстрации, и значение свойств AutoSize, Strech И Proportional равно False,то отображается часть иллюстрации

Признак автоматического масштабирования картинки без искажения. Чтобы масштабированиебыло выполнено, значение свойства AutoSizeдолжно быть False

Признак автоматического масштабирования (сжатия или растяжения) иллюстрации в соответствии с реальным размером компонента. Если размеркомпонента не пропорционален размеру иллюстрации, то иллюстрация будет искажена

Признак автоматического изменения размеракомпонента в соответствии с реальным размером иллюстрации

Признак определяет расположение картинки вполе компонента по горизонтали, если ширинакартинки меньше ширины поля компонента. Еслизначение свойства равно False, то картинка прижата к правой границе компонента, если True —то картинка располагается по центру

Отображается ли компонент и, соответственно,иллюстрация на поверхности формы

Поверхность, на которую можно вывести графику

Источник

Глава 5. Поверхности и форматы пикселей

Наверное, это самая важная глава во всей книге. Она посвящена поверхностям, а поверхности — главное, для чего создавалась библиотека DirectDraw. Поверхности DirectDraw позволяют хранить изображения, копировать и изменять их, переключать кадры и выводить графическую информацию на экран. Все интерфейсы DirectDraw в первую очередь ориентированы на работу с поверхностями. Интерфейс DirectDrawPalette облегчает интерпретацию палитровых поверхностей; интерфейс DirectDrawClipper определяет, какая часть (или части) поверхности будут копироваться при блиттинге; наконец, сам интерфейс DirectDraw обеспечивает основные средства для работы с поверхностями.

Поверхности

Поверхностью называется интерфейс, представляющий область памяти. Интерфейс DirectDrawSurface выполняет различные операции с этой памятью — размещение, копирование, переключение и освобождение. Интерфейс поверхностей позволяет написать практически любое графическое приложение.

Тем не менее следует заметить, что доступ к памяти поверхности должен предоставляться интерфейсом DirectDrawSurface; вы не сможете обратиться к поверхности никаким другим способом. Если учесть это обстоятельство, становится ясно, что интерфейс DirectDrawSurface должен быть быстрым и универсальным. К счастью, дело обстоит именно так.

Интерфейс DirectDrawSurface обеспечивает прямой доступ к памяти поверхности. Он предоставляет самые быстрые и гибкие средства для работы с поверхностями, потому что вы можете делать с памятью все, что захотите, и работа не замедляется никакими интерфейсами-посредниками. Более того, данные поверхности всегда организованы линейно, независимо от способа их хранения в видеоустройстве.

Несмотря на все преимущества прямого линейного доступа, при манипуляциях с поверхностями программист должен соблюдать осторожность. Например, чтобы получить указатель на память поверхности, ее необходимо предварительно заблокировать. Чаще всего такая блокировка заставляет DirectDraw временно отключать основные механизмы Windows. Если вы забудете разблокировать поверхность или ваша программа «зависнет» при заблокированной поверхности, скорее всего, придется перезагружать компьютер. Кроме того, для проверки правильности работы кода между вызовами Lock() и Unlock() нельзя пользоваться отладчиками.

Новые возможности DirectX 5

DirectX 5 позволяет указать DirectDraw, что во время блокировки поверхностей можно обойтись без остановки механизмов Windows. DirectDraw постарается заблокировать поверхность, но при этом обойтись без обычных проблем.

Эта новая возможность обеспечивается функцией Lock() интерфейса DirectDrawSurface3, которой можно передать новый флаг DDLOCK_NOSYSLOCK. Ситуации, в которой DirectDraw сможет заблокировать поверхность без остановки системы, нигде не описаны, поэтому нет никаких гарантий, что ваша просьба будет удовлетворена. Если это не удастся сделать, поверхность блокируется стандартным способом.

Для прямого доступа к поверхности нужно знать формат ее пикселей. Этот формат определяет способ хранения цветовых данных каждого пикселя. Он может изменяться в зависимости от видеоустройства и даже от видеорежима. Форматы пикселей особенно сильно различаются для поверхностей High Color (16-битных).

При прямом доступе к памяти поверхности необходимо также знать значение шага поверхности (surface stride). Шагом называется объем памяти, необходимый для представления горизонтальной строки пикселей. С первого взгляда кажется, что шаг поверхности совпадает с ее шириной, но на самом деле это разные параметры. Шаг поверхности, как и формат пикселей, зависит от конкретного видеоустройства.

В этой главе мы рассмотрим и решим все эти проблемы. Мы начнем с изучения форматов пикселей, а затем посмотрим, как написать код для работы с любыми типами поверхностей, независимо от глубины и формата пикселей. Затем мы изучим формат BMP-файлов, при этом основное внимание будет уделяться загрузке BMP-файла на поверхность. Главу завершает программа BmpView, предназначенная для просмотра графических файлов формата BMP (если вас интересует только процесс загрузки растровых изображений на поверхности, обращайтесь к заключительному разделу этой главы).

Глубина пикселей показывает, сколько разных цветов может быть представлено одним пикселем поверхности. Глубина пикселей также влияет на объем памяти, необходимой для представления поверхности. В DirectDraw предусмотрена поддержка четырех глубин пикселей: 8-битных (палитровых), 16-битных (High Color), 24-битных и 32-битных (объединяемых термином True Color).

Для организации наиболее эффективного доступа к памяти поверхности необходимо знать глубину ее пикселей. Если вы собираетесь заблокировать поверхность и обратиться к ее памяти, нужно знать, как добраться до каждого отдельного пикселя, как назначить ему нужный цвет и как интерпретировать существующие цветовые данные. Начнем с 8-битных поверхностей.

Наверное, с 8-битными, или палитровыми, поверхностями работать проще всего, потому что каждый пиксель в них представляется одним байтом. Как вы вскоре убедитесь, это особенно упрощает интерпретацию BMP-файлов. Кроме того, каждый пиксель 8-битной поверхности просто соответствует целочисленному индексу палитры, а не закодированному цветовому значению. Впрочем, это достоинство отчасти компенсируется хлопотами по работе с палитрой.

Пиксели High Color (16-битные) выглядят несколько сложнее, однако результат часто оправдывает усилия. Простота использования, характерная для беспалитровых поверхностей, сочетается в них с умеренным расходом памяти (по сравнению с пикселями глубины True Color). Каждый пиксель High Color содержит не индекс, а цвет. Цвета выражаются в виде комбинации трех цветовых составляющих: красной, зеленой и синей (RGB).

Пиксели True Color делятся на две категории (24- и 32-битные), но в обоих случаях используются только 24 бита данных RGB. Лишние 8 бит 32-битных пикселей иногда используются для хранения альфа-канала (то есть данных о прозрачности пикселя). К сожалению, в DirectDraw все еще отсутствует возможность эмуляции альфа-наложения, так что лишние биты 32-битного пикселя часто пропадают впустую.

Разумеется, достоинства поверхностей True Color отчасти снижаются увеличенным расходом памяти. Сказанное поясняет рис. 5.1, на котором наглядно изображены глубины всех четырех вариантов пикселей.

Хотя рис. 5.1 не содержит никаких особых откровений, он позволяет понять, как представление пикселя в памяти зависит от его глубины. Кроме того, его общая структура будет использоваться в других рисунках данного раздела.

поверхность на которую можно вывести графику

Рис. 5.1. Зависимость требований к памяти от глубины пикселей

Шаг поверхности Шагом поверхности называется объем памяти (в байтах), необходимой для представления горизонтальной строки пикселей. Шаг поверхности может совпадать с объемом памяти, необходимой для хранения горизонтальной строки пикселей, но часто оказывается больше.

Для примера возьмем 8-битную поверхность (поскольку один пиксель в таких поверхностях представляется одним байтом, что упрощает вычисления). Предположим, ваше видеоустройство требует, чтобы во внутреннем (для DirectDraw) представлении ширина поверхности была выровнена по границам параграфов (то есть была кратна 4 байтам). В этом случае поверхность с шириной в 10 пикселей будет иметь внутреннюю ширину в 12 байт. Если мы заблокируем эту поверхность и назначим значения пикселей, предполагая, что развертка одной горизонтальной строки занимает 10 байт, изображение получится перекошенным. Проблему можно легко решить, если вместо ширины при развертке поверхностей будет использоваться шаг. При этом независимо от внутренней ширины поверхностей, используемой DirectDraw, вычисление адресов пикселей будет давать правильный результат. Ситуация поясняется на рис. 5.2.

поверхность на которую можно вывести графику

Рис. 5.2. Небольшая 8-битная поверхность с разными значениями шага и ширины

Для беспалитровых поверхностей шаг и ширина поверхности уже не связаны между собой, поскольку каждый пиксель занимает несколько байт. К примеру, возьмем поверхность High Color (16-битную). При ширине поверхности в 5 пикселей каждая строка будет занимать 10 байт. Если видеоустройство требует, чтобы фактическая ширина поверхности выравнивалась по границе параграфа, DirectDraw создает поверхность с внутренней шириной в 12 байт (см. рис. 5.3).

Обратите внимание: если бы ширина 16-битной поверхности на рис. 5.3 была равна 6 пикселям вместо 5, шаг поверхности остался бы прежним, потому что в каждой строке остается свободное место для одного дополнительного пикселя.

поверхность на которую можно вывести графику

Рис. 5.3. Небольшая 16-битная поверхность с разными значениями шага и ширины

Давайте рассмотрим еще два примера, на этот раз с 24-битными поверхностями. При 12-байтовой модели, использованной выше, и 24-битной глубине пикселя в одной строке можно будет хранить 4 пикселя и избежать потерь памяти. Но что произойдет, если поверхность имеет ширину в 5 пикселей? Шаг увеличится до 16 байт, а в каждой строке будет напрасно пропадать один байт. Обе ситуации изображены на рис. 5.4.

Перед тем как двигаться дальше, я хотел бы пояснить, что пример с выравниваем по границе параграфов не следует понимать слишком буквально. В соответствии с идеологией DirectDraw вам необходимо знать лишь то, что для перемещения между горизонтальными строками пикселей необходимо использовать шаг поверхности, а не ее ширину. Примеры лишь показывают, почему шаг поверхности настолько важен для работы.

поверхность на которую можно вывести графику

Рис. 5.4. Две небольшие 24-битные поверхности

Шаг поверхности важен еще и потому, что при прямом доступе к памяти поверхности вам приходится работать с отдельными строками пикселей. Полное сохранение всей поверхности на диске и повторная загрузка ее в виде единого блока — неудачная мысль. Такой вариант сработает лишь в том случае, если при загрузке вы пользуетесь тем же видеорежимом и видеоустройством, что и при сохранении поверхности.

Теперь давайте посмотрим, как хранятся в памяти отдельные пиксели. Мы уже знаем, что для 8-битных поверхностей значение пикселя является индексом в палитре. В этом случае поверхность заполняется не цветовыми данными, а ссылками на них. Палитра представляет собой список цветов, в каждом элементе которого хранятся RGB-составляющие, описывающие данный цвет.

В 16-битных пикселях хранится непосредственно цветовая информация. 16-битные форматы пикселей делятся на две основные разновидности: в первой каждая RGB-составляющая представлена 5 битами (оставшийся бит не используется), а во второй 5 битами представлены только красная и синяя составляющие, а для зеленой используется 6 бит. Для этих форматов часто применяются условные обозначения 5-5-5 и 5-6-5 соответственно.

В формате 5-5-5 каждая цветовая составляющая может принимать значения из интервала от 0 до 31. Чем больше значение составляющей, тем интенсивнее она проявляется в результирующем цвете. Формат 5-6-5 работает аналогично, за исключением того, что зеленая составляющая может принимать значения из интервала 0–63. Эти два вида 16-битных пикселей изображены на рис. 5.5.

поверхность на которую можно вывести графику

Рис. 5.5. Два распространенных 16-битных формата пикселей

Следовательно, чтобы ваш код был по-настоящему переносимым, вы не должны полагаться на конкретный формат пикселей или класс форматов. Ведь библиотека DirectDraw была создана именно для того, чтобы предоставить обобщенный интерфейс для работы с аппаратными устройствами. Любое ненужное допущение в вашей программе снижает потенциал приложения. Позднее в этой главе мы рассмотрим универсальный код, работающий с любым 16-битным форматом пикселей.

24- и 32-битные пиксели, как и 16-битные, делятся на две разновидности: RGB и BGR. Следовательно, код для работы с пикселями True Color должен использовать сведения о формате, полученные от DirectDraw, и не делать никаких безусловных предположений.

Напоминаю, что альфа-байт в 32-битных пикселях часто остается неиспользованным. Если ваша программа не работает с альфа-данными, вы можете выбирать между 24- и 32-битным видеорежимами. Работа в 24-битном режиме экономит память.

поверхность на которую можно вывести графику

Рис. 5.6. Типичные форматы пикселей True Color

Получение данных о формате пикселей

Сведения о формате пикселей поверхности можно получить функцией GetPixelFormat() интерфейса DirectDrawSurface, в которой для передачи данных используется структура DDPIXELFORMAT. Функция GetPixelFormat() применяется так:

Структура DDPIXELFORMAT содержит четыре поля, представляющих для нас интерес:

Поле dwRGBBitCount показывает глубину пикселей поверхности. Три оставшихся поля являются масками, определяющими, в каких битах пикселя хранятся данные красной, зеленой и синей составляющих. Например, типичные значения полей для поверхности High Color формата 5-6-5 приведены в табл. 5.1.

Три маски показывают, в каких позициях пикселя хранятся данные отдельных цветовых составляющих. С помощью этих масок можно корректно читать и записывать данные пикселя независимо от его формата.

Таблица 5.1. Типичные данные формата для 16-битных пикселей

ПолеЗначениеДвоичное значение
dwRGBBitCount16(неважно)
dwRBitMask634881111100000000000
dwGBitMask20160000011111100000
dwBBitMask310000000000011111

В приведенном ниже коде маски используются для вычисления двух величин: начальной позиции каждой цветовой составляющей внутри пикселя (бит, с которого начинается составляющая, или стартовый бит), и количества бит для представления каждой цветовой составляющей. Значения этих величин приведены в табл. 5.2. Обратите внимание на то, что стартовый бит отсчитывается справа налево (старшие биты в двоичных величинах находятся слева).

Рассчитанные значения облегчают операции с пикселями. Стартовый бит показывает, на сколько позиций сдвигаются данные цветовой составляющей, а количество — сколько бит занимает составляющая в двоичной величине.

Таблица 5.2. Типичные данные формата для 16-битных пикселей

ПолеЗначениеДвоичное значениеСтартовый битКоличество бит
dwRBitMask634881111100000000000115
dwGBitMask2016000001111110000056
dwBBitMask31000000000001111105

Однако до сих пор мы рассматривали лишь 16-битные пиксели. 8-битные пиксели нас не интересуют, но перед тем, как идти дальше, необходимо уделить внимание пикселям формата True Color. В табл. 5.3 приведены данные формата пикселей (в том числе две вычисленные величины для каждой цветовой составляющей) для типичного 24-битного формата.

Таблица 5.3. Типичные данные формата для 24-битных пикселей

ПолеЗначениеДвоичное значениеСтартовый битКоличество бит
dwRBitMask16711680111111110000000000000000168
dwGBitMask6528000000000111111111000000088
dwBBitMask25500000000000000001111111108

Помните — данные в этих таблицах относятся к конкретной аппаратуре. Они представлены лишь для примера того, как могут выглядеть такие данные, а не как исчерпывающее руководство по форматам пикселей.

Переменные формата пикселей в классе DirectDrawWin

При описании класса DirectDrawWin в главе 3 мы видели, что функция DirectDrawWin::ActivateDisplayMode() после активизации нового видеорежима, но до создания вспомогательных поверхностей приложения, вызывает функцию StorePixelFormatData(). Описание этой функции было отложено до настоящего момента.

Функция StorePixelFormatData() присваивает значения шести переменным класса DirectDrawWin в соответствии с форматом пикселей текущего активного видеорежима; эти переменные определяют стартовый бит и количество бит для каждой цветовой составляющей пикселя. В следующем разделе мы увидим, как эти переменные используются при манипуляциях с памятью поверхности. Функция StorePixelFormatData() выглядит так:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *