Глава 31. Resource Workshop__________________________________897

Библиотека OWL и Windows 95 API предоставляет ряд функций, обеспечивающих вывод, редактирование и сохранение изображений в формате битовых образов. В этом разделе будет показано, как выводить битовые образы с палитрами в 16 и 256 цветов. Работа с битовыми образами требует несколько большего объема кода, чем курсоры и значки, но, разумеется, много меньшего, чем непосредственное использование алгоритмов сжатия и обработки изображений.

16-цветные битовые образы

Битовые образы с 16-цветной палитрой способны обеспечить вывод картинок с хорошим разрешением и достаточным разнообразием цветов. Такие картинки не требовательны к ресурсам жесткого диска и динамической памяти. Демонстрационная программа, приводимая в этом разделе, выводит битовый образ, созданный в графическом редакторе Paintbrush на основе популярной карикатуры.

Для использования этого примера откройте файл проекта .ide из оболочки Borland. Вызовите Resource Workshop и откройте файл проекта ресурсов. С помощью команд меню File, Add to Project или Resource, New, Creating a bitmap добавьте в проект файл битового образа, который вы хотите вывести. Можно переименовать ресурс командой Edit, Rename или оставить имя, предлагаемое для битового образа по умолчанию. Затем сохраните проект и выйдите из Resource Workshop.

Теперь у вас есть заголовочный файл (.h), содержащий ссылку на ресурс, файл ресурсов, содержащий битовый образ и пустой .срр файл для текста программы. Поскольку выводить битовые образы может понадобиться в самых различных случаях, пример из листинга 31.4 демонстрирует использование базовых средств вывода таких картинок из приложений (результат работы программы см. на рис. 31.9).

h08911.jpg

1. // OWLBMP.CPP — Пример вывода 16-цветного битового образа

2. // Заголовочные файлы Borland

3. ^include <owi\applicat.h>

4. #include <owl\framewin.h>

5. #include <owl\pch.h>

6. #include <owl\dc.h>

7. // Заголовки не из Borland

8. #include "owlbmp.h"

9. class TBitmapWindow : public TFrameWindow{

10. public:

11. TBitmapWindow( const char *title) ;

12. -TBitmapWindow();