Condividi tramite


Effetto di scalabilità

Usare questo effetto per ridimensionare un'immagine verso l'alto o verso il basso. L'effetto ha sei modalità di ridimensionamento: vicino, lineare, lineare, cubo, lineare multi-campione, anisotropico e cubo di alta qualità.

ClSID per questo effetto è CLSID_D2D1Scale.

Immagine di esempio

In questo esempio viene illustrato lo zoom dell'effetto di scala in 2 volte l'input e il ritaglio delle dimensioni originali.

Prima
immagine prima dell'effetto.
After
immagine dopo la trasformazione.
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();

Proprietà dell'effetto

Enumerazione nome visualizzato e indice Descrizione
Scalabilità
D2D1_SCALE_PROP_SCALE
La quantità di scala nella direzione X e Y come rapporto tra le dimensioni dell'output e le dimensioni dell'input. Questa proprietà è una D2D1_VECTOR_2Fdefined come: (scala X, scala Y). Le quantità di scalabilità sono FLOAT, unitless e devono essere positive o 0.
Il tipo è D2D1_VECTOR_2F.
Il valore predefinito è {1.0f, 1.0f}.
CenterPoint
D2D1_SCALE_PROP_CENTER_POINT
Punto centrale di ridimensionamento delle immagini. Questa proprietà è una D2D1_VECTOR_2F definita come: (punto X, punto Y). Le unità sono in DIP.
Utilizzare la proprietà punto centrale per ridimensionare intorno a un punto diverso dall'angolo superiore sinistro.
Il tipo è D2D1_VECTOR_2F.
Il valore predefinito è {0.0f, 0.0f}.
BorderMode
D2D1_SCALE_PROP_BORDER_MODE
Modalità utilizzata per calcolare il bordo dell'immagine, soft o hard. Per altre informazioni, vedere Modalità bordo .
Il tipo è D2D1_BORDER_MODE.
Il valore predefinito è D2D1_BORDER_MODE_SOFT.
Nitidezza
D2D1_SCALE_PROP_SHARPNESS
Nella modalità di interpolazione cubica di alta qualità, il livello di nitidezza del filtro di ridimensionamento come float compreso tra 0 e 1. I valori sono senza unità. È possibile usare la nitidezza per regolare la qualità di un'immagine quando si ridimensiona l'immagine.
Il fattore di nitidezza influisce sulla forma del kernel. Maggiore è il fattore di nitidezza, il kernel più piccolo.
Nota: Questa proprietà influisce solo sulla modalità di interpolazione cubica di alta qualità.
Il tipo è FLOAT.
Il valore predefinito è 0,0f.
InterpolationMode
D2D1_SCALE_PROP_INTERPOLATION_MODE
La modalità interpolazione usa l'effetto per ridimensionare l'immagine. Esistono 6 modalità di scalabilità che vanno in qualità e velocità. Per altre informazioni, vedere Modalità di interpolazione .
Il tipo è D2D1_SCALE_INTERPOLATION_MODE.
Il valore predefinito è D2D1_SCALE_INTERPOLATION_MODE_LINEAR.

Modalità bordo

Nome Descrizione
D2D1_BORDER_MODE_SOFT L'effetto inserisce l'immagine di input con pixel neri trasparenti per esempi esterni ai limiti di input quando si applica il kernel di convoluzione. Ciò crea un bordo morbido per l'immagine e nel processo espande la bitmap di output in base alle dimensioni del kernel.
D2D1_BORDER_MODE_HARD L'effetto estende l'immagine di input con una trasformazione del bordo di tipo mirror per esempi esterni ai limiti di input. Le dimensioni della bitmap di output sono uguali alle dimensioni della bitmap di input.

`

Modalità di interpolazione

Enumerazione Descrizione
D2D1_SCALE_INTERPOLATION_MODE_NEAREST_NEIGHBOR Esempi del singolo punto più vicino e lo usa. Questa modalità usa meno tempo di elaborazione, ma restituisce l'immagine di qualità più bassa.
D2D1_SCALE_INTERPOLATION_MODE_LINEAR Usa un esempio a quattro punti e l'interpolazione lineare. Questa modalità usa più tempo di elaborazione rispetto alla modalità vicina più vicina, ma restituisce un'immagine di qualità superiore.
D2D1_SCALE_INTERPOLATION_MODE_CUBIC Usa un kernel cubo di esempio 16 per l'interpolazione. Questa modalità usa il tempo di elaborazione più elevato, ma restituisce un'immagine di qualità superiore.
D2D1_SCALE_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR Usa 4 esempi lineari all'interno di un singolo pixel per un buon anti-aliasing perimetrale. Questa modalità è utile per ridurre le dimensioni in base a piccole quantità per le immagini con pochi pixel.
D2D1_SCALE_INTERPOLATION_MODE_ANISOTROPIC Usa un filtro anisotropico per campionire un modello in base alla forma trasformata della bitmap.
D2D1_SCALE_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC Usa un kernel cubico di dimensioni variabili di alta qualità per eseguire una pre-ridimensionamento dell'immagine se la scalabilità orizzontale è coinvolta nella matrice di trasformazione. Usa quindi la modalità di interpolazione cubica per l'output finale.

Nota

Se non si seleziona una modalità, l'effetto viene predefinito per D2D1_SCALE_INTERPOLATION_MODE_LINEAR.

Nota

La modalità anisotropica genera mipmap durante il ridimensionamento, tuttavia, se si imposta la proprietà Cache su true sugli effetti che vengono inseriti in questo effetto, le mipmap non verranno generate ogni volta per immagini sufficientemente piccole.

Bitmap di output

La posizione e le dimensioni della bitmap di output dipendono dal fattore di scala specificato e dal punto centrale.

È possibile calcolare le dimensioni della bitmap di output usando questa equazione:

BitmapSizex(Pixel)=Scalex*Original Bitmap Sizex (DIPs)*(UserDPI/96)
BitmapSizey(Pixel)=Scaley*Original Bitmap Sizey (DIPs)*(UserDPI/96)

L'effetto arrotonda le frazioni di pixel fino all'intero pixel più vicino.

La posizione della bitmap è (0, 0) o il valore della proprietà del punto centrale.

Requisiti

Requisito Valore
Client minimo supportato Windows 8 e Platform Update per Windows 7 [app desktop | App di Windows Store]
Server minimo supportato Windows 8 e Platform Update per Windows 7 [app desktop | App di Windows Store]
Intestazione d2d1effects.h
Libreria d2d1.lib, dxguid.lib

ID2D1Effect