Metafile::SetDownLevelRasterizationLimit 方法 (gdiplusheaders.h)

设置存储在此图元文件中的某些画笔位图的分辨率。

语法

Status SetDownLevelRasterizationLimit(
  [in] UINT metafileRasterizationLimitDpi
);

parameters

[in] metafileRasterizationLimitDpi

类型: UINT

指定 dpi 分辨率的非负整数。 如果将此参数设置为等于 0,则分辨率将设置为与传递给 图元文件 构造函数的设备上下文句柄的分辨率匹配。 如果将此参数设置为大于 0 但小于 10 的值,则分辨率保持不变。

返回值

类型: 状态

如果该方法成功,则返回 OK,这是 Status 枚举的元素。

如果方法失败,它将返回 Status 枚举的其他元素之一。

注解

此方法的目的是防止图元文件因纹理和渐变画笔以高分辨率存储而变得过大。 假设基于分辨率为 600 dpi 的打印机的设备上下文, (构造用于记录 EmfTypeEmfOnly 图元文件) 的图元文件对象。 此外,假设基于分辨率为 96 dpi 的 Bitmap 对象创建路径渐变画笔或纹理画笔。 如果表示该画笔的位图以 96 dpi 的分辨率存储在图元文件中,则它所需的空间将比以 600 dpi 分辨率存储的图要少得多。

图元文件的默认光栅化限制为 96 dpi。 因此,如果不调用此方法,则路径渐变画笔和纹理画笔位图的存储分辨率为 96 dpi。

光栅化限制对 EmfTypeEmfOnlyEmfTypeEmfPlusDual 类型的图元文件有影响,但对 类型 EmfTypeEmfPlusOnly 的图元文件没有影响。

示例

以下示例基于打印机的设备上下文构造 图元文件 对象。 该代码基于 BMP 文件创建纹理画笔,然后记录填充该画笔的椭圆。 假设打印机的分辨率为 600 dpi, 位图 对象的分辨率为 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.

要求

   
最低受支持的客户端 Windows XP、Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 gdiplusheaders.h (包括 Gdiplus.h)
Library Gdiplus.lib
DLL Gdiplus.dll

另请参阅

EmfType

Metafile

Metafile::GetDownLevelRasterizationLimit

录制图元文件