Partager via


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, cube, linéaire multi-échantillon, anisotropique et cube de haute qualité.

Le CLSID pour cet effet est CLSID_D2D1Scale.

Exemple d’image

Cet exemple montre le zoom de l’effet d’échelle en 2 fois l’entrée et le rognage vers la taille d’origine.

Avant
l’image avant l’effet.
Après
l’image après la transformation.
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 complet et énumération d’index Description
Écaille
D2D1_SCALE_PROP_SCALE
Quantité d’échelle dans la direction X et Y sous la forme d’un rapport entre la taille de sortie et la taille d’entrée. Cette propriété est une D2D1_VECTOR_2Fdefined en tant que : (échelle X, échelle Y). Les quantités d’échelle sont FLOAT, sans unité et doivent être positives ou 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 se trouvent dans des ADRESSES IP.
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, douce ou dure. Pour plus d’informations, consultez modes bordure.
Le type est D2D1_BORDER_MODE.
La valeur par défaut est D2D1_BORDER_MODE_SOFT.
Acuité
D2D1_SCALE_PROP_SHARPNESS
En mode d’interpolation cube de haute qualité, niveau de netteté du filtre de mise à l’échelle sous forme de flotteur 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.
Remarque : Cette propriété affecte uniquement le mode d’interpolation cube 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 d’é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 pavét 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 la bitmap de sortie par 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 la 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 utilise cela. 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 de 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 noyau cube de 16 exemples pour l’interpolation. Ce mode utilise le temps de traitement le plus élevé, mais génère une image de qualité supérieure.
D2D1_SCALE_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR Utilise 4 exemples linéaires au sein d’un seul pixel pour une bonne anticrénelage de bord. Ce mode est utile pour effectuer un scale-down de petites quantités sur des images avec quelques pixels.
D2D1_SCALE_INTERPOLATION_MODE_ANISOTROPIC Utilise le filtrage anisotropique 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 cube de grande qualité de taille variable pour effectuer une mise à l’échelle antérieure à 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.

Note

Si vous ne sélectionnez pas de mode, l’effet par défaut est D2D1_SCALE_INTERPOLATION_MODE_LINEAR.

Note

Le mode anisotropique 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 dans 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 la bitmap de sortie dépendent du facteur d’échelle spécifié et du point central.

Vous pouvez calculer la taille de la 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.

Exigences

Exigence Valeur
Client minimum pris en charge Windows 8 et Mise à jour de plateforme pour Windows 7 [applications de bureau | Applications du Windows Store]
Serveur minimum 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

ID2D1Effect