Поделиться через


Метод 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 процентов изображения.

Снимок экрана: части трех многоточий: все первые, 30 % второго и 75 % третьего

Требования

Требование Значение
Минимальная версия клиента Windows XP, Windows 2000 Профессиональная [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header gdiplusheaders.h (включая Gdiplus.h)
Библиотека Gdiplus.lib
DLL Gdiplus.dll

См. также раздел

Изображение

Image::GetHeight

Image::GetWidth

Работа с растровыми и векторными изображениями с использованием классов Image, Bitmap и Metafile

RectF

Единица измерения

Использование изображений, точечных изображений и метафайлов