Effetto con trasformazione affine 2D
L'effetto trasformazione affine 2D applica una trasformazione spaziale a un'immagine basata su una matrice 3X2 usando la trasformazione della matrice Direct2D e una delle sei modalità di interpolazione. È possibile usare questo effetto per ruotare, ridimensionare, asimmetrie o tradurre un'immagine. In alternativa, è possibile combinare queste operazioni. I trasferimenti affine mantengono le linee parallele e il rapporto di distanze tra tre punti in un'immagine.
Il CLSID per questo effetto è CLSID_D2D12DAffineTransform.
- Immagine di esempio
- Proprietà dell'effetto
- Modalità bordo
- Modalità di interpolazione
- Bitmap di output
- Requisiti
- Argomenti correlati
Immagine di esempio
Prima di |
---|
Dopo |
ComPtr<ID2D1Effect> affineTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D12DAffineTransform, &affineTransformEffect);
affineTransformEffect->SetInput(0, bitmap);
D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F(0.9f, -0.1f, 0.1f, 0.9f, 8.0f, 45.0f);
affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(affineTransformEffect.Get());
m_d2dContext->EndDraw();
Questo effetto esegue questa operazione matrice:
Sebbene la matrice di input sia definita come matrice 3x2, l'ultima colonna viene riempita con 0, 0 e 1 per produrre una matrice quadrata. Ciò consente la moltiplicazione di matrici, in modo che le trasformazioni possano essere concatenate in una singola matrice.
Proprietà dell'effetto
Enumerazione del nome visualizzato e dell'indice | Descrizione |
---|---|
InterpolationMode D2D1_2DAFFINETRANSFORM_PROP_INTERPOLATION_MODE |
Modalità di interpolazione utilizzata per ridimensionare l'immagine. Esistono 6 modalità di scala che variano in qualità e velocità. Il tipo è D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE. Il valore predefinito è D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR. |
BorderMode D2D1_2DAFFINETRANSFORM_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. |
TransformMatrix D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX |
Matrice 3x2 per trasformare l'immagine usando la trasformazione matrice Direct2D. Il tipo è D2D1_MATRIX_3X2_F. Il valore predefinito è Matrix3x2F::Identity(). |
Nitidezza D2D1_2DAFFINETRANSFORM_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. |
Modalità bordo
Nome | Descrizione |
---|---|
D2D1_BORDER_MODE_SOFT | L'effetto riempie l'immagine con pixel neri trasparenti durante l'interpolazione, ottenendo un bordo morbido. |
D2D1_BORDER_MODE_HARD | L'effetto blocca l'output alle dimensioni dell'immagine di input. |
Modalità di interpolazione
Enumerazione | Descrizione |
---|---|
D2D1_2DAFFINETRANSFORM_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_2DAFFINETRANSFORM_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_2DAFFINETRANSFORM_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_2DAFFINETRANSFORM_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_2DAFFINETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | Usa il filtro anisotropico per campionare un modello in base alla forma trasformata della bitmap. |
D2D1_2DAFFINETRANSFORM_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_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR.
Nota
La modalità Anisotropic genera mipmap durante il ridimensionamento, tuttavia, se si imposta la proprietà Cached su true sugli effetti che sono input per questo effetto, le mipmap non verranno generate ogni volta per immagini sufficientemente piccole.
Bitmap di output
Le dimensioni della bitmap di output dipendono dalla matrice di trasformazione applicata all'immagine.
L'effetto esegue l'operazione di trasformazione e quindi applica un rettangolo di selezione intorno al risultato. La bitmap di output è la dimensione del rettangolo di selezione.
Requisiti
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 |
Libreria | d2d1.lib, dxguid.lib |