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.

Captura de tela mostrando partes de três reticências: todas as primeiras, 30% do segundo e 75% da terceira

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

Confira também

Imagem

Image::GetHeight

Image::GetWidth

Imagens, Bitmaps e Metarquivos

RectF

Unidade

Usando imagens, bitmaps e metarquivos