Effet d’échelle
Utilisez cet effet pour mettre à l’échelle une image vers le haut ou vers le bas. L’effet a six modes de mise à l’échelle : voisin le plus proche, linéaire, cubique, linéaire à plusieurs échantillons, anisotrope et cube de haute qualité.
Le CLSID de cet effet est CLSID_D2D1Scale.
- Exemple d’image
- Propriétés d’effet
- Modes d’interpolation
- Bitmap de sortie
- Configuration requise
- Rubriques connexes
Exemple d’image
Cet exemple montre que l’effet d’échelle effectue un zoom de deux fois l’entrée et le rognage à la taille d’origine.
Avant |
---|
Après |
ComPtr<ID2D1Effect> scaleEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Scale, &scaleEffect);
scaleEffect->SetInput(0, bitmap);
scaleEffect->SetValue(D2D1_SCALE_PROP_CENTER_POINT, D2D1::Vector2F(256.0f, 192.0f));
scaleEffect->SetValue(D2D1_SCALE_PROP_SCALE, D2D1::Vector2F(2.0f, 2.0f));
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(scaleEffect.Get());
m_d2dContext->EndDraw();
Propriétés d’effet
Nom d’affichage et énumération d’index | Description |
---|---|
Scale D2D1_SCALE_PROP_SCALE |
Quantité de mise à l’échelle dans les directions X et Y en tant que rapport entre la taille de sortie et la taille d’entrée. Cette propriété D2D1_VECTOR_2Fdefined comme suit : (échelle X, échelle Y). Les quantités d’échelle sont FLOAT, sans unité et doivent être positives ou égales à 0. Le type est D2D1_VECTOR_2F. La valeur par défaut est {1.0f, 1.0f}. |
CenterPoint D2D1_SCALE_PROP_CENTER_POINT |
Point central de mise à l’échelle de l’image. Cette propriété est une D2D1_VECTOR_2F définie comme suit : (point X, point Y). Les unités sont en DIPs. Utilisez la propriété de point central pour effectuer une mise à l’échelle autour d’un point autre que le coin supérieur gauche. Le type est D2D1_VECTOR_2F. La valeur par défaut est {0.0f, 0.0f}. |
BorderMode D2D1_SCALE_PROP_BORDER_MODE |
Mode utilisé pour calculer la bordure de l’image, soft ou hard. Pour plus d’informations, consultez Modes de bordure . Le type est D2D1_BORDER_MODE. La valeur par défaut est D2D1_BORDER_MODE_SOFT. |
Netteté D2D1_SCALE_PROP_SHARPNESS |
En mode d’interpolation cubique de haute qualité, le niveau de netteté de la mise à l’échelle filtre comme un float compris entre 0 et 1. Les valeurs sont sans unité. Vous pouvez utiliser la netteté pour ajuster la qualité d’une image lorsque vous effectuez un scale-down de l’image. Le facteur de netteté affecte la forme du noyau. Plus le facteur de netteté est élevé, plus le noyau est petit. Note: Cette propriété affecte uniquement le mode d’interpolation cubique de haute qualité. Le type est FLOAT. La valeur par défaut est 0,0f. |
InterpolationMode D2D1_SCALE_PROP_INTERPOLATION_MODE |
Mode d’interpolation utilisé par l’effet pour mettre à l’échelle l’image. Il existe 6 modes de mise à l’échelle qui varient en qualité et en vitesse. Pour plus d’informations, consultez Modes d’interpolation . Le type est D2D1_SCALE_INTERPOLATION_MODE. La valeur par défaut est D2D1_SCALE_INTERPOLATION_MODE_LINEAR. |
Modes de bordure
Nom | Description |
---|---|
D2D1_BORDER_MODE_SOFT | L’effet tamponne l’image d’entrée avec des pixels noirs transparents pour les exemples en dehors des limites d’entrée lorsqu’il applique le noyau de convolution. Cela crée un bord souple pour l’image et, dans le processus, développe l’image bitmap de sortie en fonction de la taille du noyau. |
D2D1_BORDER_MODE_HARD | L’effet étend l’image d’entrée avec une transformation de bordure de type miroir pour les exemples en dehors des limites d’entrée. La taille de l’image bitmap de sortie est égale à la taille de la bitmap d’entrée. |
`
Modes d’interpolation
Énumération | Description |
---|---|
D2D1_SCALE_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Échantillonne le point unique le plus proche et l’utilise. Ce mode utilise moins de temps de traitement, mais génère l’image de qualité la plus faible. |
D2D1_SCALE_INTERPOLATION_MODE_LINEAR | Utilise un exemple à quatre points et une interpolation linéaire. Ce mode utilise plus de temps de traitement que le mode voisin le plus proche, mais génère une image de qualité supérieure. |
D2D1_SCALE_INTERPOLATION_MODE_CUBIC | Utilise un exemple de noyau cubique de 16 pour l’interpolation. Ce mode utilise le plus de temps de traitement, mais génère une image de meilleure qualité. |
D2D1_SCALE_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | Utilise 4 exemples linéaires au sein d’un seul pixel pour une bonne anti-aliasing de bord. Ce mode est adapté à la mise à l’échelle de petites quantités sur des images de quelques pixels. |
D2D1_SCALE_INTERPOLATION_MODE_ANISOTROPIC | Utilise le filtrage anisotrope pour échantillonner un modèle en fonction de la forme transformée de la bitmap. |
D2D1_SCALE_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC | Utilise un noyau cubique de haute qualité de taille variable pour effectuer une mise à l’échelle antérieure de l’image si la mise à l’échelle inférieure est impliquée dans la matrice de transformation. Utilise ensuite le mode d’interpolation cubique pour la sortie finale. |
Notes
Si vous ne sélectionnez pas de mode, l’effet par défaut est D2D1_SCALE_INTERPOLATION_MODE_LINEAR.
Notes
Le mode anisotrope génère des mipmaps lors de la mise à l’échelle. Toutefois, si vous définissez la propriété Mise en cache sur true sur les effets qui sont entrés pour cet effet, les mipmaps ne seront pas générés à chaque fois pour des images suffisamment petites.
Bitmap de sortie
L’emplacement et la taille de l’image bitmap de sortie dépendent du facteur d’échelle spécifié et du point central.
Vous pouvez calculer la taille de l’image bitmap de sortie à l’aide de cette équation :
- BitmapSizex(Pixels)=Scalex*Original Bitmap Sizex (DIPs)*(UserDPI/96)
BitmapSizey(Pixels)=Scaley*Original Bitmap Sizey (DIPs)*(UserDPI/96)
L’effet arrondit les fractions de pixels jusqu’au pixel entier le plus proche.
L’emplacement de la bitmap est (0, 0) ou la valeur de la propriété de point central.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 8 et Mise à jour de plateforme pour Windows 7 [applications de bureau | Applications du Windows Store] |
Serveur minimal pris en charge | Windows 8 et Mise à jour de plateforme pour Windows 7 [applications de bureau | Applications du Windows Store] |
En-tête | d2d1effects.h |
Bibliothèque | d2d1.lib, dxguid.lib |