Метод 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 |