| netlib.narod.ru | < Назад | Оглавление | Далее > |
Класс Image включает несколько дополнительных методов, предоставляющих ограниченные возможности сохранения и манипуляции изображениями.
Методы Save класса Image (выборочно)
| void Save(string strFilename, ImageFormat if) |
| void Save(Stream stream, ImageFormat if) |
Метод Save не работает с объектами Image, загруженными из метафайла или хранящимися в битовой карте в памяти. Кроме того, нельзя сохранить изображение в формате метафайла или битовой карты в памяти.
Следующие два метода предоставляют возможности изменения размера, а также вращения и переворота изображения соответственно.
Методы класса Image (выборочно)
| Image GetThumbnailImage(int cx, int су, Image.GetThumbnailImageAbort gtia, IntPtr pData) |
| void RotateFlip(RotateFliptype rft); |
Метод GetTbumbnailImage создает миниатюры — уменьшенные изображения, позволяющие приложениям представлять их содержимое пользователю, экономя время и место. Тем не менее метод GetTbumbnailImage фактически является универсальной функцией изменения размера изображения. Картинку можно как увеличить, так и уменьшить. Последние два аргумента указывают функцию обратного вызова, но им можно задать значения null и 0, что не скажется на работе метода. Следующая программа создает миниатюру, размещаемую в квадрате со стороной 64 пиксела.
Thumbnail.cs
//------------------------------------------
// Thumbnail.cs (C) 2001 by Charles Petzold
//------------------------------------------
using System;
using System.Drawing;
using System.Windows.Forms;
class Thumbnail: PrintableForm
{
const int iSquare = 64;
Image imageThumbnail;
public new static void Main()
{
Application.Run(new Thumbnail());
}
public Thumbnail()
{
Text = "Thumbnail";
Image image = Image.FromFile("..\\..\\..\\Apollo11FullColor.jpg");
int cxThumbnail, cyThumbnail;
if (image.Width > image.Height)
{
cxThumbnail = iSquare;
cyThumbnail = iSquare * image.Height / image.Width;
}
else
{
cyThumbnail = iSquare;
cxThumbnail = iSquare * image.Width / image.Height;
}
imageThumbnail = image.GetThumbnailImage(cxThumbnail, cyThumbnail,
null, (IntPtr) 0);
}
protected override void DoPage(Graphics grfx, Color clr, int cx, int cy)
{
for (int y = 0; y < cy; y += iSquare)
for (int x = 0; x < cx; x += iSquare)
grfx.DrawImage(imageThumbnail,
x + (iSquare - imageThumbnail.Width) / 2,
y + (iSquare - imageThumbnail.Height) / 2,
imageThumbnail.Width, imageThumbnail.Height);
}
}
Метод DoPage программы заполняет миниатюрами всю клиентскую область (или страницу принтера).

Метод GetThumbnailImage создает новое изображение, a RotateFlip — изменяет существующее. Он принимает единственный аргумент — член перечисления RotateFlipType.
Перечисление RotateFlipType
| Член | Значение | Результат |
| RotateNoneFlipNone Rotate180FlipXY |
0 | ![]() |
| Rotate90FlipNone Rotate270FlipXY |
1 | ![]() |
| Rotate180FlipNone RotateNoneFlipXY |
2 | ![]() |
| Rotate270FlipNone Rotate90FlipXY |
3 | ![]() |
| RotateNoneFlipX Rotate180FlipY |
4 | ![]() |
| Rotate90FlipX Rotate270FlipY |
5 | ![]() |
| Rotate180FlipX RotateNoneFlipY |
6 | ![]() |
| Rotate270FlipX Rotate90FlipY |
7 | ![]() |
В перечислении 16 элементов, но только 8 уникальных значений, влияющих на изображение. Четыре из этих восьми элементов меняют местами значения свойств Width и Height объекта Image.
Если вам нужно повернуть или перевернуть изображение и одновременно сохранить исходную копию оригинального объекта Image, применяйте метод Clone.
Image imageCopy = (Image)image.Clone();
| netlib.narod.ru | < Назад | Оглавление | Далее > |