Método Metafile::SetDownLevelRasterizationLimit (gdiplusheaders.h)

Define a resolução para determinados bitmaps de pincel armazenados neste metarquivo.

Sintaxe

Status SetDownLevelRasterizationLimit(
  [in] UINT metafileRasterizationLimitDpi
);

Parâmetros

[in] metafileRasterizationLimitDpi

Tipo: UINT

Inteiro não negativo que especifica a resolução no dpi. Se você definir esse parâmetro igual a 0, a resolução será definida para corresponder à resolução do identificador de contexto do dispositivo que foi passado para o construtor Metafile . Se você definir esse parâmetro como um valor maior que 0, mas menor que 10, a resolução permanecerá inalterada.

Valor retornado

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

A finalidade desse método é impedir que os metarquivos se tornem muito grandes como resultado de pincéis de textura e gradiente sendo armazenados em alta resolução. Suponha que você construa um objeto Metafile (para gravar um metafile EmfTypeEmfOnly ) com base no contexto do dispositivo de uma impressora que tem uma resolução de 600 dpi. Suponha também que você crie um pincel de gradiente de caminho ou um pincel de textura com base em um objeto Bitmap que tenha uma resolução de 96 dpi. Se o bitmap que representa esse pincel for armazenado no metarquivo com uma resolução de 96 dpi, ele exigirá muito menos espaço do que se ele for armazenado com uma resolução de 600 dpi.

O limite de rasterização padrão para metarquivos é 96 dpi. Portanto, se você não chamar esse método, o pincel de gradiente de caminho e bitmaps de pincel de textura serão armazenados com uma resolução de 96 dpi.

O limite de rasterização tem um efeito sobre metafiles do tipo EmfTypeEmfOnly e EmfTypeEmfPlusDual, mas não tem efeito sobre metafiles do tipo EmfTypeEmfPlusOnly.

Exemplos

O exemplo a seguir constrói um objeto Metafile com base no contexto do dispositivo de uma impressora. O código cria um pincel de textura com base em um arquivo BMP e, em seguida, registra uma elipse preenchida com esse pincel. Suponha que a impressora tenha uma resolução de 600 dpi e que o objeto Bitmap tenha uma resolução de 96 dpi.


// Get a device context for a printer.
HDC hdcPrint = CreateDC(NULL, TEXT("\\\\printserver\\printer1"), NULL, NULL); 

// Construct a Metafile object (for recording) based on a 600-DPI printer.
Metafile metafile(L"Metafile.emf", hdcPrint, EmfTypeEmfOnly);
{     
   // Create a texture brush based on a 96-DPI bitmap. 
   Bitmap bitmap(L"Texture.bmp");
   TextureBrush textureBrush(&bitmap);

   // Set the rasterization limit of the metafile to match the DPI of the
   // printer DC, in this case 600. When the bitmap for the texture brush
   // is stored in the metafile, the bitmap will be expanded by a factor of
   // about 6 horizontally and vertically. That will increase the size of 
   // the bitmap by a factor of about 36.
   metafile.SetDownLevelRasterizationLimit(0);

   // Record an ellipse filled with the texture brush.
   Graphics graphics(&metafile);  
   graphics.FillEllipse(&textureBrush, 10, 10, 40, 40);
}

// The preceding code, along with a particular 24 x 23 bitmap,
// produced a 114 kilobyte metafile. Passing 96, instead of 0, to the 
// SetDownLevelRasterizationLimit method produced a 3.5 kilobyte metafile.

Requisitos

   
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

Emftype

Metarquivo

Metafile::GetDownLevelRasterizationLimit

Gravando metafiles