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.
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 |