Metafile::SetDownLevelRasterizationLimit, méthode (gdiplusheaders.h)
Définit la résolution de certains bitmaps de pinceau qui sont stockés dans ce métafichier.
Syntaxe
Status SetDownLevelRasterizationLimit(
[in] UINT metafileRasterizationLimitDpi
);
Paramètres
[in] metafileRasterizationLimitDpi
Type : UINT
Entier non négatif qui spécifie la résolution en ppp. Si vous définissez ce paramètre sur 0, la résolution est définie pour correspondre à la résolution du handle de contexte de l’appareil qui a été passé au constructeur Metafile . Si vous définissez ce paramètre sur une valeur supérieure à 0 mais inférieure à 10, la résolution reste inchangée.
Valeur retournée
Type : État
Si la méthode réussit, elle retourne OK, qui est un élément de l’énumération Status .
Si la méthode échoue, elle retourne l’un des autres éléments de l’énumération Status .
Notes
L’objectif de cette méthode est d’empêcher les métafichiers de devenir trop volumineux en raison du stockage des pinceaux de texture et de dégradé à haute résolution. Supposons que vous construisiez un objet Metafile (pour l’enregistrement d’un métafichier EmfTypeEmfOnly ) en fonction du contexte d’appareil d’une imprimante dont la résolution est de 600 ppp. Supposons également que vous créez un pinceau de dégradé de chemin ou un pinceau de texture basé sur un objet Bitmap dont la résolution est de 96 ppp. Si la bitmap qui représente ce pinceau est stockée dans le métafichier avec une résolution de 96 ppp, elle nécessite beaucoup moins d’espace que si elle est stockée avec une résolution de 600 ppp.
La limite de rastérisation par défaut pour les métafichiers est de 96 ppp. Par conséquent, si vous n’appelez pas cette méthode du tout, les bitmaps de pinceau de dégradé de chemin et de pinceau de texture sont stockées avec une résolution de 96 ppp.
La limite de rastérisation a un effet sur les métafichiers de type EmfTypeEmfOnly et EmfTypeEmfPlusDual, mais elle n’a aucun effet sur les métafichiers de type EmfTypeEmfPlusOnly.
Exemples
L’exemple suivant construit un objet Metafile en fonction du contexte d’appareil d’une imprimante. Le code crée un pinceau de texture basé sur un fichier BMP, puis enregistre une ellipse remplie de ce pinceau. Supposons que l’imprimante a une résolution de 600 ppp et que l’objet Bitmap a une résolution de 96 ppp.
// 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.
Spécifications
Client minimal pris en charge | Windows XP, Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | gdiplusheaders.h (inclure Gdiplus.h) |
Bibliothèque | Gdiplus.lib |
DLL | Gdiplus.dll |