Effetto con trasformazione 3D
Usare l'effetto di trasformazione 3D per applicare una matrice di trasformazione 4x4 arbitraria a un'immagine.
Questo effetto applica la matrice (M?) specificata ai vertici angolari dell'immagine di origine ([ x y z 1 ]) usando questo calcolo:
[ xr yrz r 1 ]=[ x y z 1 ]*M?
Il CLSID per questo effetto è CLSID_D2D13DTransform.
- Immagine di esempio
- Proprietà dell'effetto
- Classe matrice di trasformazione 4x4
- Requisiti
- Argomenti correlati
Immagine di esempio
Prima |
---|
After |
ComPtr<ID2D1Effect> D2D13DTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D13DTransform, &D2D13DTransformEffect);
D2D13DTransformEffect->SetInput(0, bitmap);
// You can use the helper methods in D2D1::Matrix4x4F to create common matrix transformations.
D2D1_MATRIX_4X4_F matrix =
D2D1::Matrix4x4F::Translation(0.0f, -192.0f, 0.0f) *
D2D1::Matrix4x4F::RotationY(30.0f) *
D2D1::Matrix4x4F::Translation(0.0f, 192.0f, 0.0f);
D2D13DTransformEffect->SetValue(D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(D2D13DTransformEffect.Get());
m_d2dContext->EndDraw();
Proprietà dell'effetto
Enumerazione nome visualizzato e indice | Descrizione |
---|---|
InterpolationMode D2D1_3DTRANSFORM_PROP_INTERPOLATION_MODE |
Modalità di interpolazione utilizzata dall'effetto sull'immagine. Esistono 5 modalità di scala che variano in termini di qualità e velocità. Il tipo è D2D1_3DTRANSFORM_INTERPOLATION_MODE. Il valore predefinito è D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR. |
BorderMode D2D1_3DTRANSFORM_PROP_BORDER_MODE |
Modalità utilizzata per calcolare il bordo dell'immagine, morbido o rigido. Per altre info, vedi Modalità bordo . Il tipo è D2D1_BORDER_MODE. Il valore predefinito è D2D1_BORDER_MODE_SOFT. |
TransformMatrix D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX |
Matrice di trasformazione 4x4 applicata al piano di proiezione. Il calcolo della matrice seguente viene usato per eseguire il mapping dei punti da un sistema di coordinate 3D al sistema di coordinate 2D trasformato. Dove:
Mx,y = Transform Matrix elements X , Y , Z =Coordinate del piano di proiezione di output I singoli elementi della matrice non sono delimitati e sono unitless. Il tipo è D2D1_MATRIX_4X4_F. Il valore predefinito è Matrix4x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1). |
Modalità di interpolazione
Enumerazione | Descrizione |
---|---|
D2D1_3DTRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Campiona il punto singolo più vicino e lo usa. Questa modalità usa meno tempo di elaborazione, ma restituisce l'immagine di qualità più bassa. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR | Usa un campione a quattro punti e l'interpolazione lineare. Questa modalità usa più tempo di elaborazione rispetto alla modalità adiacente più vicina, ma restituisce un'immagine di qualità superiore. |
D2D1_3DTRANSFORM_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_3DTRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | Usa 4 campioni lineari all'interno di un singolo pixel per anti-aliasing dei bordi validi. Questa modalità è valida per ridurre le dimensioni delle immagini con pochi pixel. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | Usa il filtro anisotropico per campionare un modello in base alla forma trasformata della bitmap. |
Nota
Se non si seleziona una modalità, per impostazione predefinita l'effetto viene D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR.
Nota
La modalità Anisotropic genera mipmap durante il ridimensionamento, tuttavia, se si imposta la proprietà Cached su true sugli effetti di input per questo effetto, le mipmap non verranno generate ogni volta per immagini sufficientemente piccole.
Modalità bordo
Nome | Descrizione |
---|---|
D2D1_BORDER_MODE_SOFT | L'effetto riempie l'immagine con pixel neri trasparenti durante l'interpolazione, generando un bordo morbido. |
D2D1_BORDER_MODE_HARD | L'effetto blocca l'output alle dimensioni dell'immagine di input. |
Classe matrice di trasformazione 4x4
Direct2D fornisce una classe matrice 4x4 per fornire funzioni helper per trasformare l'immagine in 3 dimensioni. Per altre informazioni e una descrizione di tutti i membri della classe, vedi l'argomento Matrix4x4F .
Funzione | Descrizione | Matrice |
---|---|---|
Matrix4x4F::Scale(X, Y, Z) | Genera una matrice di trasformazione che ridimensiona il piano di proiezione nella direzione X, Y e/o Z. | |
AsimmetriaX(X) | Genera una matrice di trasformazione che inclina il piano di proiezione nella direzione X. | |
Asimmetria (Y) | Genera una matrice di trasformazione che inclina il piano di proiezione nella direzione Y. | |
Translation(X, Y, Z) | Genera una matrice di trasformazione che converte il piano di proiezione nella direzione X, Y o Z. | |
RotationX(X) | Genera una matrice di trasformazione che ruota il piano di proiezione sull'asse X. | |
Rotazione (Y) | Genera una matrice di trasformazione che ruota il piano di proiezione sull'asse Y. | |
RotationZ(Z) | Genera una matrice di trasformazione che ruota il piano di proiezione sull'asse Z. | |
PerspectiveProjection(D) | Trasformazione prospettica con un valore di profondità D. | |
RotationArbitraryAxis(X, Y, Z, gradi) | Ruota il piano di proiezione sull'asse specificato. |
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 |