Método Image::GetBounds (gdiplusheaders.h)
O método Image::GetBounds obtém o retângulo delimitador para esta imagem.
Sintaxe
Status GetBounds(
[out] RectF *srcRect,
[out] Unit *srcUnit
);
Parâmetros
[out] srcRect
Tipo: RectF*
Ponteiro para um objeto RectF que recebe o retângulo delimitador.
[out] srcUnit
Tipo: Unidade*
Ponteiro para uma variável que recebe um elemento da enumeração Unit que indica a unidade de medida para o retângulo delimitador.
Retornar valor
Tipo: Status
Se o método for bem-sucedido, ele retornará Ok, que é um elemento da enumeração Status .
Se o método falhar, ele retornará um dos outros elementos da enumeração Status .
Comentários
O retângulo delimitador de um metarquivo não tem necessariamente (0, 0) como seu canto superior esquerdo. As coordenadas do canto superior esquerdo podem ser negativas ou positivas, dependendo dos comandos de desenho emitidos durante a gravação do metarquivo. Por exemplo, suponha que um meta-arquivo consiste em uma única elipse que foi registrada com a seguinte instrução:
DrawEllipse(&pen, 200, 100, 80, 40);
Em seguida, o retângulo delimitador para o metarquivo incluirá essa elipse. O canto superior esquerdo do retângulo delimitador não será (0, 0); em vez disso, será um ponto próximo (200, 100).
Exemplos
O exemplo a seguir cria um objeto Image com base em um metarquivo e desenha a imagem. Em seguida, o código chama o método Image::GetBounds para obter o retângulo delimitador para a imagem. O código faz duas tentativas de exibir 75% da imagem. A primeira tentativa falha porque especifica (0, 0) para o canto superior esquerdo do retângulo de origem. A segunda tentativa é bem-sucedida porque usa os membros de dados X e Y retornados por Image::GetBounds para especificar o canto superior esquerdo do retângulo de origem.
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);
}
O código anterior, juntamente com um arquivo específico, SampleMetafile2.emf, produziu a saída a seguir. Observe que a primeira tentativa (superior direita) de desenhar 75% da imagem mostra apenas cerca de 30% da imagem.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP, Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | gdiplusheaders.h (inclua Gdiplus.h) |
Biblioteca | Gdiplus.lib |
DLL | Gdiplus.dll |