Compartir a través de


Método Image::GetBounds (gdiplusheaders.h)

El método Image::GetBounds obtiene el rectángulo delimitador de esta imagen.

Sintaxis

Status GetBounds(
  [out] RectF *srcRect,
  [out] Unit  *srcUnit
);

Parámetros

[out] srcRect

Tipo: RectF*

Puntero a un objeto RectF que recibe el rectángulo delimitador.

[out] srcUnit

Tipo: Unidad*

Puntero a una variable que recibe un elemento de la enumeración Unit que indica la unidad de medida para el rectángulo delimitador.

Valor devuelto

Tipo: Estado

Si el método se realiza correctamente, devuelve Ok, que es un elemento de la enumeración Status .

Si se produce un error en el método, devuelve uno de los otros elementos de la enumeración Status .

Comentarios

El rectángulo delimitador de un metarchivo no tiene necesariamente (0, 0) como esquina superior izquierda. Las coordenadas de la esquina superior izquierda pueden ser negativas o positivas, en función de los comandos de dibujo emitidos durante la grabación del metarchivo. Por ejemplo, supongamos que un metarchivo consta de una sola elipse que se registró con la siguiente instrucción:

DrawEllipse(&pen, 200, 100, 80, 40);

A continuación, el rectángulo delimitador del metarchivo incluirá esa elipse. La esquina superior izquierda del rectángulo delimitador no será (0, 0); en su lugar, será un punto cercano (200, 100).

Ejemplos

En el ejemplo siguiente se crea un objeto Image basado en un metarchivo y, a continuación, se dibuja la imagen. A continuación, el código llama al método Image::GetBounds para obtener el rectángulo delimitador de la imagen. El código realiza dos intentos de mostrar el 75 % de la imagen. Se produce un error en el primer intento porque especifica (0, 0) para la esquina superior izquierda del rectángulo de origen. El segundo intento se realiza correctamente porque usa los miembros de datos X e Ydevueltos por Image::GetBounds para especificar la esquina superior izquierda del rectángulo de origen.

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);
}

El código anterior, junto con un archivo determinado, SampleMetafile2.emf, produjo la siguiente salida. Tenga en cuenta que el primer intento (superior derecho) para dibujar el 75 % de la imagen solo muestra alrededor del 30 % de la imagen.

Captura de pantalla que muestra partes de tres puntos suspensivos: todos los primeros, el 30 % del segundo y el 75 % del tercero

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP, Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado gdiplusheaders.h (include Gdiplus.h)
Library Gdiplus.lib
Archivo DLL Gdiplus.dll

Consulte también

Imagen

Image::GetHeight

Image::GetWidth

Imágenes, mapas de bits y metarchivos

RectF

Unidad

Uso de imágenes, mapas de bits y metarchivos