Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Литература_1 / photon_old.doc
Скачиваний:
38
Добавлен:
02.04.2015
Размер:
7.88 Mб
Скачать
    1. Побитовые образы (bitmaps)

Побитовые образы рисуются с использованием текущего состояния текста. Если Вы установили flags в Pg_BACK_FILL, пустые пиксели образа рисуются с использованием текущего состояния заполнения. Примитивами рисования для побитовых образов являются:

PgDrawBitmap(), PgDrawBitmapmx() Рисование побитового образа

PgDrawRepBitmap(), PgDrawRepBitmapmx() Рисование побитового образа несколько раз

В этом примере рисуется побитовый образ на прозрачном фоне:

void DrawSimpleBitmap( void ) {

PhPoint_t p = { 8, 8 };

PgSetTextColor( Pg_CELIDON );

PgDrawBitmap( TestBitmap, 0, &p, &TestBitmapSize, TestBitmapBPL, 0 );

}

              1. Побитовый образ на прозрачном фоне

В этом примере рисуется побитовый образ на жёлтом фоне:

void DrawBackFillBitmap( void ) {

PhPoint_t p = { 8, 8 };

PgSetTextColor( Pg_CELIDON );

PgSetFillColor( Pg_YELLOW );

PgDrawBitmap( TestBitmap, Pg_BACK_FILL, &p, &TestBitmapSize, TestBitmapBPL, 0 );

}

              1. Побитовый образ с затенённым фоном

    1. Образы (images)

В этом разделе обсуждается:

  • Образы на основе палитры

  • Образы в непосредственных цветах

  • Образы в градиентных цветах

  • Создание образов

  • Кеширование образов

  • Прозрачность в образах

  • Отображение образов

  • Управление образами

  • Отключение образов

Photon'овский микроGUI поддерживает следующие основные типы образов:

  • В непосредственных цветах (direct color)

Состоит из:

  • данных образа – матрицы цветов (но необязательно типа PgColor_t). Каждый элемент в матрице является цветом пикселя.

Образы в непосредственных цветах имеют тип, начинающийся с Pg_IMAGE_DIRECT_

  • На основе палитры

Состоят из:

  • палитры – массива типа PgColor_t;

  • данных образа – матрицы, элементы которой являются смещениями в палитре.

Образы на основе палитры имеют тип, начинающийся с Pg_IMAGE_PALETTE_

  • В градиентных цветах

Цвета сгенерированы алгоритмически как градиент между двумя заданными цветами.

Вы можете определить любой образ через его размер пикселя [т.е. числом бит на пиксель – Прим. пер.], байтов на линию, данные образа и формат. Образ может быть сохранён в структуре типа PhImage_t (описанной в "Справочнике библиотечных функций Photon'а"). Область type этой структуры определяет тип образа.

      1. Образы на основе палитры

Образы на основе палитры обеспечивают быстрый, компактный способ рисования образов. Перед тем как прорисовывать образ на основе палитры, Вы должны установить либо аппаратную, либо программную палитру, чтобы задать цвета образа. Установка аппаратной палитры изменяет физическую палитру. Весь набор цветов функции PgSetFillColor() выбирается из этой палитры. Другие процессы продолжают выбирать цвета из глобальной палитры Photon'овского микроGUI и могут выглядеть неверно. Когда Вы отключаете аппаратную палитру, остальные процессы возвращаются к нормальному отображению без перерисовки. Вы должны всегда отключать аппаратную палитру, когда Ваше окно теряет фокус.

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

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

Данные образа (байты или полубайты) являются индексом в текущей палитре. Например:

PgColor_t ImagePalette[256];

char *ImageData;

PhPoint_t ImageSize;

int ImageBPL;

void DrawYourImage( PhPoint_t pos ) {

PgSetPalette( ImagePalette, 0, 0, 256, Pg_PALSET_SOFT );

PgDrawImage( ImageData, Pg_IMAGE_PALETTE_BYTE, pos, ImageSize, ImageBPL, 0 );

}

Соседние файлы в папке Литература_1