Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Поддержка основных графических форматов





Это качество является одним из наиболее привлекательных свойств библиотеки GDI+. Например, скромный и неприметный редактор Paint в Windows XP неожиданно приобрел возможность открывать и сохранять не только картинки BMP, но также и JPG, TIF, GIF и PNG, что сразу сделало его на порядок более мощным средством. Это полезное качество появилось в нем благодаря использованию GDI+.

К графическим фильтрам GDI+ уже прочно прикрепилось жаргонное название "кодек" (codec, Compressor/Decompressor).

 

Загрузка из файлов и потоков (IStream)

Для загрузки изображения из файла существует следующий конструктор:

Bitmap(const WCHAR* filename, BOOL useIcm);

Параметр filename должен содержать имя существующего файла. Все строковые параметры методов GDI+ требуют UNICODE-строк, поэтому при передаче строковой константы в программе на C++ необходимо предварять ее префиксом ‘L’.

Параметр useIcm определяет, будет ли при загрузке растра использоваться ICM (Image Color Management), и по умолчанию равен FALSE. Если же использовать ICM необходимо, графический файл должен содержать всю нужную информацию, например, цветовые профили конкретных устройств.

Существует достаточно неприятная ошибка в коде GDI+, отвечающем за загрузку изображений из файлов – часто (но не всегда), при указании несуществующего имени файла, вместо того, чтобы вернуть код ошибки в переменной Status, приложение завершается с выдачей сообщения об ошибке (Application Error).

Более гибкие возможности загрузки таятся в таком конструкторе Bitmap:

Bitmap(IStream* stream, BOOL useIcm);

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

Создание растров из ресурсов программы

Следующий конструктор Bitmap позволяет загрузить растр из ресурсов:

Bitmap(HINSTANCE hInstance, const WCHAR* bitmapName);

Далеко не всякий ресурс удастся загрузить таким образом. Этот конструктор предназначен для загрузки именно BITMAP-ресурсов, и не поддерживает, скажем, загрузку GIF.

Более сложные варианты загрузки изображений

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

Bitmap(const BITMAPINFO* gdiBitmapInfo, VOID* gdiBitmapData); Bitmap(HBITMAP hbm, HPALETTE hpal); Bitmap(HICON hicon); Bitmap(IDirectDrawSurface7 * surface);

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

 







Date: 2016-06-06; view: 559; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию