Глава 31. Resource Workshop__________________________________693

Сущность нововведений состоит в появлении нового класса TBitmapwindow, производного от TFramewindow. С этим новым типом вы получаете прямой доступ к дескриптору окна, переменным контекста устройства и другим данным, ответственным за вывод битового образа в клиентском окне. Строки с 9 по 18 содержат объявление класса TBitmapwindow, включая конструктор, деструктор, функцию paint, указатель на TBitmap и точечный объект. Остальная функциональность существует в родительском классе. Основная работа производится в функции paint.

Конструктор TBifinapWindOW. Конструктор размещает в куче объект TBitmap, который и будет загружать битовый образ. Затем производится подгонка параметров окна с учетом дополнительного пространства, необходимого для рамок. Стиль окна устанавливается оператором

Attr.Style &= -(WS_THICKFRAME ¦ WS_MAXIMIZEBOX);

Из него следует, что атрибуты окна будут использовать атрибуты по умолчанию, за исключением того, что у окна не будет толстой рамки (т. е. нельзя будет изменять размеры окна) и кнопки развертывания. В конце вычисляется относительное положение центра изображения. После этого картинка готова к выводу при получении от Windows сообщения WM_PAINT.

ФУНКЦИЯ Paint класса TBitmapWindOW. Базовый класс TWindow обеспечивает наличие виртуальной функции paint. Поскольку для вывода битового образа программа должна выполнять некоторые специфические задачи, для класса TBitmapwindow определяется своя функция paint. Когда Windows посылает приложению сообщение WM_PAINT, вызывается эта функция и выводит картинку. Функция paint достаточно проста: она создает контекст устройства типа TMemoryDC и с помощью функции BitBit выводит изображение в клиентскую область окна. Вообще говоря, с помощью такой же процедуры можно вывести на экран рассматриваемые в следующем разделе 256-цветные битовые образы.

Битовые образы с 256-ти цветной палитрой

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

Программа из предыдущего раздела (для 16-цветных картинок), в действительности может выводить и изображение из 256 цветов. Чтобы выполнить вывод такого изображения, нужно добавить изображение в файл ресурсов и использовать его как аргумент при вызове конструктора TBitmap в строке 22.