netlib.narod.ru< Назад | Оглавление | Далее >

Обзор поддержки растровых изображений

Пространство имен System.Drawing включает два класса, Image и Bitmap, реализующих в .NET большую часть функций поддержки растровой графики. Классы Bitmap и Metafile (о последнем подробнее будет рассказано в главе 23) являются производными от класса Image, как показывает приведенная иерархия классов:


Рис. 11.1.

Image — абстрактный класс, экземпляр которого нельзя создать конструктором. И все же Image имеет два статических метода (если считать перегруженные — четыре), которые возвращают объекты типа Image. Эти весьма мощные методы позволяют загружать растровое изображение или метафайл из файла или потока. Сразу можно предположить, что они работают с BMP-файлами — родным форматом растровых изображений Windows. Что может показаться неожиданным, эти методы могут загружать файлы и в некоторых других растровых форматах, включая GIF, JPEG, PNG и TIFF. Класс Image имеет еще один статический метод, позволяющий создавать объект Bitmap на основе дескриптора битовой карты Win32.

Полученный объект Image можно вывести на экран или принтер одним из методов DrawImage класса Graphics. Кроме того, используя статический метод FromImage класса Graphics, можно вернуть объект Graphics, соответствующий изображению. Это позволит приложению рисовать на битовой карте. Дополнительные методы класса Image позволяют сохранить объект Image в одном из поддерживаемых форматов. Таким образом, класс Image имеет встроенную функцию преобразования форматов.

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

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

Иногда программисту трудно решить, какой класс использовать для конкретной задачи — Image или Bitmap. Если все нужные действия можно выполнить через класс Image, выбирайте его. Преимущество такого решения в том, что код будет работать и с метафайлами (за некоторыми исключениями).


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz