Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Визуализация изображений
Визуализация изображений
К этому моменту вы знаете, как работать с тремя из четырех главных типов GDI+: шрифтами, перьями и кистями. Заключительным типом, который мы с вами рассмотрим в этой главе, будет класс Image (изображение) и связанные с ним подтипы. Абстрактный тип System.Drawing.Image определяет ряд методов и свойств, хранящих различную информацию о том изображении, которое этот тип представляет. Например, для представления размеров изображения класс Image предлагает свойства Width, Height и Size. Другие свойства позволяют получить доступ к палитре изображения. Описания базовых членов класса Image приведены в табл. 20.8.
Таблица 20.8. Члены типа Image
Члены | Описание |
---|---|
FromFile() | Статический метод, создающий объект Image из указанного файла |
FromStream() | Статический метод, создающий объект Image из указанного потока данных |
Height Width Size HorizontalResolution VerticalResolution | Свойства, возвращающие информацию о размерах данного объекта Image |
Palette | Свойство, возвращающее тип данных ColorPalette, который представляет палитру, используемую для данного объекта Image |
GetBounds | Метод, возвращающий объект Rectangle, который представляет текущие размеры данного объекта Image |
Save() | Метод, сохраняющий в файл данные, содержащиеся в производном от Image типе |
Поскольку экземпляр абстрактного класса Image нельзя создать непосредственно, обычно непосредственно создается экземпляр типа Bitmap. Предположим, что у нас есть некоторый класс Form, отображающий три точечных рисунка в области клиента. Указав для каждого из типов Bitmap подходящий файл изображения, просто отобразите их в обработчике события Paint, используя метод Graphics.DrawImage().
public partial class MainForm: Form {
private Bitmap[] myImages = new Bitmap[3];
public MainForm() {
// Загрузка локальных изображений.
myImages[0] = new Bitmap("imageA.bmp");
myImages[1] = new Вitmap("imageB.bmp");
myImages[2] = new Bitmap("imageC.bmp");
CenterToScreen();
InitializeComponent();
}
private void MainForm_Paint(object sender, PaintEventArgs e) {
Graphics g = e.Qraphics;
// Визуализация изображений.
int yOffSet = 20;
foreach (Bitmap b in myImages) {
g.DrawImage(b, 10, yOffSet, 90, 90);
yOffSet += 100;
}
}
}
Замечание. Файлы *.bmp, которые используются в этом примере, должны находиться в той же папке, где находится само приложение (или должны быть "жестко" указаны пути, по которым эти изображения можно найти). Соответствующая проблема будет обсуждаться в этой главе чуть позже.
На рис. 20.18 показан соответствующий вывод.
Рис. 20.18. Визуализация изображений
Наконец, необходимо отметить, что, несмотря на имя Bitmap, этот класс может содержать изображения, сохраненные в любом из целого ряда форматов (*.tif, *.gif, *.bmp и т.д.).
Исходный код. Проект BasicImages размещен в подкаталоге, соответствующем главе 20.
- Обзор пространств имен GDI+
- Обзор пространства имен System.Drawing
- Утилитарные типы System.Drawing
- Класс Graphics
- Сеансы Paint
- Системы координат GDI+
- Определение цветовых значений
- Манипулирование шрифтами
- Обзор пространства имен System.Drawing.Drawing2D
- Работа с типами Pen
- Работа с типами Brush
- Визуализация изображений
- Попадание в заданную область и операции перетаскивания для PictureBox
- Формат ресурсов .NET
- Резюме
- Визуализация выездных сессий в Бристоле
- 8 Рендеринг (визуализация) и обработка изображений
- Пример 2: предварительная визуализация объектов для сюжетной игры
- ГЛАВА 20. Визуализация графических данных средствами GDI+
- ВИЗУАЛИЗАЦИЯ ДНК В JMOL
- 15.3. Обработка изображений при помощи RMagick
- Введение Визуализация работы коллективного интеллекта
- 1.2. Создание изображений. Графические примитивы
- 1.22. Показ изображений с помощью UIImageView
- Надо уменьшить размер ста изображений. Не делать же это вручную. Есть ли способ автоматизировать процесс?
- Редактирование изображений в фотоальбоме
- Подготовка изображений для публикации в Интернете