Метод Image::GetBounds (gdiplusheaders.h)
Метод Image::GetBounds получает ограничивающий прямоугольник для этого изображения.
Синтаксис
Status GetBounds(
[out] RectF *srcRect,
[out] Unit *srcUnit
);
Параметры
[out] srcRect
Тип: RectF*
Указатель на объект RectF , который получает ограничивающий прямоугольник.
[out] srcUnit
Тип: Единица измерения*
Указатель на переменную, получающую элемент перечисления Unit , указывающий единицу измерения для ограничивающего прямоугольника.
Возвращаемое значение
Тип: Состояние
В случае успешного выполнения метода возвращается ОК, который является элементом перечисления Status .
Если метод завершается ошибкой, он возвращает один из других элементов перечисления Status .
Комментарии
Ограничивающий прямоугольник для метафайла не обязательно имеет (0, 0) в качестве верхнего левого угла. Координаты левого верхнего угла могут быть отрицательными или положительными в зависимости от команд рисования, которые были выданы во время записи метафайла. Например, предположим, что метафайл состоит из одного эллипса, который был записан с помощью следующей инструкции:
DrawEllipse(&pen, 200, 100, 80, 40);
Затем ограничивающий прямоугольник для метафайла заключит этот эллипс. Верхний левый угол ограничивающего прямоугольника не будет иметь значение (0, 0); скорее, это будет точка рядом (200, 100).
Примеры
В следующем примере создается объект Image на основе метафайла, а затем рисуется изображение. Затем код вызывает метод Image::GetBounds , чтобы получить ограничивающий прямоугольник для изображения. Код выполняет две попытки отображения 75 процентов изображения. Первая попытка завершается сбоем, так как она указывает (0, 0) для левого верхнего угла исходного прямоугольника. Вторая попытка завершается успешно, так как для указания левого верхнего угла исходного прямоугольника используются элементы данных X и Y , возвращаемые методом Image::GetBounds .
VOID Example_GetBounds(HDC hdc)
{
Graphics graphics(hdc);
Image image(L"SampleMetafile2.emf");
graphics.DrawImage(&image, 0, 0);
// Get the bounding rectangle for the image (metafile).
RectF boundsRect;
Unit unit;
image.GetBounds(&boundsRect, &unit);
// Attempt to draw 75 percent of the image.
// Less than 75 percent of the image will be visible because the
// upper-left corner of the image's bounding rectangle is not (0, 0).
RectF dstRect(250.0f, 0.0f, 100.0f, 50.0f);
graphics.DrawImage(
&image,
dstRect, // destination rectangle
0.0f, 0.0f, // upper-left corner of source rectangle
0.75f*boundsRect.Width, // width of source rectangle
boundsRect.Height, // height of source rectangle
UnitPixel);
// Draw 75 percent of the image.
dstRect.Y = 80.0f;
graphics.DrawImage(
&image,
dstRect, // destination rectangle
boundsRect.X, boundsRect.Y, // upper-left corner of source rectangle
0.75f*boundsRect.Width, // width of source rectangle
boundsRect.Height, // height of source rectangle
UnitPixel);
}
Приведенный выше код вместе с определенным файлом, SampleMetafile2.emf, выводятся следующие выходные данные. Обратите внимание, что при первой попытке (в правом верхнем углу) нарисовать 75 процентов изображения отображается только около 30 процентов изображения.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP, Windows 2000 Профессиональная [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | gdiplusheaders.h (включая Gdiplus.h) |
Библиотека | Gdiplus.lib |
DLL | Gdiplus.dll |
См. также раздел
Работа с растровыми и векторными изображениями с использованием классов Image, Bitmap и Metafile
Использование изображений, точечных изображений и метафайлов