GdipSetMetafileDownLevelRasterizationLimit()



Syntaxe
Resultat.i = GdipSetMetafileDownLevelRasterizationLimit(*metafile, metafileRasterizationLimitDpi.i)

Paramètres

*metafile

[in] Pointeur sur un objet metafile existant.

metafileRasterizationLimitDpi.i

[in] Nombre entier positif qui défini la résolution en points par pouce (dpi). Si ce paramètre vaut 0, la résolution est ajustée pour correspondre à la résolution du contexte de périphérique (Handle) passée à la fonction permettant la création du métafichier. Si la valeur de ce paramètre est supérieure à 0 et inférieure à 10, la résolution demeure inchangée.

Description

Cette fonction permet d'appliquer la valeur limite de la résolution de certaines brush (bitmap) qui sont stockées dans ce métafichier.
Microsoft indique que le but de cette fonction est d'empêcher les métafichiers de devenir trop grand du fait du stockage en haute résolution des brush de type texture (TextureBrush) et de type gradient (LinearGradientBrush et PathGradientBrush).

Supposons que vous construisez un métafichier (type EmfTypeEmfOnly) basé sur le contexte de périphérique d'une imprimante qui a une résolution de 600 dpi. Supposez aussi que vous créez une PathGradientBrush ou une LinearGradientBrush basée sur un bitmap qui a une résolution de 96 dpi. Si le bitmap qui représente cette brush est stocké dans le métafichier avec une résolution de 96 dpi, il nécessitera beaucoup moins d'espace que s'il est stocké avec une résolution de 600 dpi. La limite du tramage (Rasterization Limit) par défaut pour les métafichiers est de 96 dpi. Si vous n'appelez pas du tout cette fonction, les bitmaps des PathGradientBrush et TextureBrush sont stockés avec une résolution de 96 dpi.
La limite de tramage 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.
Le fichier d'exemple permet de créer sur le disque dur, 2 métafichiers #EmfTypeEmfPlusDual basés sur le contexte de périphérique de l'imprimante par défaut (une imprimante de 600 dpi montre bien la différence pour la taille du fichier). Une TextureBrush est créée à partir d'un fichier bmp de 25x25 pixels de résolution 96 dpi.
Pour chaque métafichier, on enregistre une ellipse pleine avec la TextureBrush en ayant défini pour le premier fichier, une résolution de 96 dpi avec la fonction GdipSetMetafileDownLevelRasterizationLimit() et pour le second la résolution est celle de l'imprimante. Dans le 1er cas, le métafichier a une taille de 5860 octets (96 dpi) et le second une taille de 119384 octets pour une imprimante de résolution 600 dpi.
La fonction GdipGetMetafileDownLevelRasterizationLimit() est utilisée pour afficher les résolutions de chaque fichier.

Résultat de la fonction

Si la fonction réussit, elle retourne #Ok qui est une constante de l'énumération status.
Si la fonction échoue, elle retourne une des autres valeurs de l'énumération status.

PB - OS

PureBasic v4.30 bêta 4 (Windows - x86)
Testé avec Windows Vista édition familiale Premium