Effetto scala
Usare questo effetto per ridimensionare un'immagine verso l'alto o verso il basso. L'effetto ha sei modalità di ridimensionamento: vicino più vicino, lineare, lineare, cubico, multi-campione lineare, anisotropico e cubo di alta qualità.
Il CLSID per questo effetto è CLSID_D2D1Scale.
- 'immagine di esempio
- proprietà effetto
- modalità di interpolazione
- bitmap di output
- requisiti
- argomenti correlati
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 |
---|
![]() |
Dopo |
![]() |
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 del nome visualizzato e dell'indice | Descrizione |
---|---|
Scala D2D1_SCALE_PROP_SCALE |
Quantità di scala nella direzione X e Y come rapporto tra le dimensioni di output e le dimensioni di input. Questa proprietà è un D2D1_VECTOR_2Fdefined come: (scala X, scala Y). Gli importi di scala sono FLOAT, unitless e devono essere positivi 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. Usare la proprietà del punto centrale per ridimensionare 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, morbido o rigido. Per altre informazioni, vedi modalità bordo. Il tipo è D2D1_BORDER_MODE. Il valore predefinito è D2D1_BORDER_MODE_SOFT. |
Acutezza 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 unitless. È 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, più piccolo è il kernel. 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 |
Modalità di interpolazione utilizzata dall'effetto per ridimensionare l'immagine. Esistono 6 modalità di scala che variano in qualità e velocità. Per altre informazioni, vedi 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 campioni esterni ai limiti di input quando applica il kernel di convoluzione. In questo modo viene creato un bordo morbido per l'immagine e nel processo viene espansa 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 campioni 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 | Campiona il 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 campione 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 cubico 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 campioni lineari all'interno di un singolo pixel per un buon anti-aliasing dei bordi. Questa modalità è utile per ridurre le dimensioni di piccole quantità nelle immagini con pochi pixel. |
D2D1_SCALE_INTERPOLATION_MODE_ANISOTROPIC | Usa il filtro anisotropico per campionare 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-riduzione della scala dell'immagine se il ridimensionamento è coinvolto nella matrice di trasformazione. Usa quindi la modalità di interpolazione cubica per l'output finale. |
Nota
Se non si seleziona una modalità, per impostazione predefinita l'effetto viene D2D1_SCALE_INTERPOLATION_MODE_LINEAR.
Nota
La modalità anisotropica genera mipmap durante il ridimensionamento, tuttavia, se si imposta la proprietà memorizzata nella cache su true sugli effetti che sono input per 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)=Scalax*Dimensioni bitmap originalix (DIP)*(UserDPI/96)
BitmapSize(pixel)=Scalay*Dimensioni bitmap originali (DIP)*(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.
Fabbisogno
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store] |
Server minimo supportato | Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store] |
Intestazione | d2d1effects.h |
Biblioteca | d2d1.lib, dxguid.lib |