Метод Metafile::SetDownLevelRasterizationLimit (gdiplusheaders.h)

Задает разрешение для определенных растровых изображений кистей, хранящихся в этом метафайле.

Синтаксис

Status SetDownLevelRasterizationLimit(
  [in] UINT metafileRasterizationLimitDpi
);

Параметры

[in] metafileRasterizationLimitDpi

Тип: UINT

Неотрицательное целое число, указывающее разрешение в dpi. Если этот параметр равен 0, разрешение будет соответствовать разрешению дескриптора контекста устройства, переданного конструктору метафайла . Если для этого параметра задано значение больше 0, но меньше 10, разрешение остается без изменений.

Возвращаемое значение

Тип: Состояние

Если метод завершается успешно, он возвращает ОК, который является элементом перечисления Status .

Если метод завершается ошибкой, он возвращает один из других элементов перечисления Status .

Комментарии

Цель этого метода — предотвратить слишком большой размер метафайлов в результате хранения текстур и градиентных кистей с высоким разрешением. Предположим, вы создаете объект Metafile (для записи метафайла EmfTypeEmfOnly ) на основе контекста устройства принтера с разрешением 600 точек на дюйм. Также предположим, что вы создаете кисть градиента пути или кисть текстуры на основе объекта Bitmap с разрешением 96 точек на дюйм. Если растровое изображение, представляющее кисть, хранится в метафайле с разрешением 96 точек на дюйм, ему потребуется гораздо меньше места, чем при хранении с разрешением 600 точек на дюйм.

Ограничение растеризации по умолчанию для метафайлов составляет 96 точек на дюйм. Таким образом, если этот метод не вызывается вовсе, кисть градиента пути и растровые изображения кистей текстур сохраняются с разрешением 96 точек на дюйм.

Ограничение растрации влияет на метафайлы типа EmfTypeEmfOnly и EmfTypeEmfPlusDual, но не влияет на метафайлы типа EmfTypeEmfPlusOnly.

Примеры

В следующем примере создается объект Metafile на основе контекста устройства принтера. Код создает кисть текстуры на основе BMP-файла, а затем записывает эллипс, заполненный этой кистью. Предположим, что принтер имеет разрешение 600 точек на дюйм, а объект Bitmap имеет разрешение 96 точек на дюйм.


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

Требования

   
Минимальная версия клиента Windows XP, Windows 2000 Профессиональная [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header gdiplusheaders.h (включая Gdiplus.h)
Библиотека Gdiplus.lib
DLL Gdiplus.dll

См. также раздел

EmfType

Метафайл

Metafile::GetDownLevelRasterizationLimit

Запись метафайлов