Effetto con trasformazione prospettica 3D
Usare l'effetto di trasformazione prospettica 3D per ruotare l'immagine in 3 dimensioni come se fossero visualizzate da una distanza.
La trasformazione prospettica 3D è più conveniente dell'effetto di trasformazione 3D, ma espone solo un subset della funzionalità. È possibile calcolare una matrice di trasformazione 3D completa e applicare una matrice di trasformazione più arbitraria a un'immagine usando l'effetto di trasformazione 3D .
Il CLSID per questo effetto è CLSID_D2D13DPerspectiveTransform.
- Immagine di esempio
- Proprietà dell'effetto
- Modalità di interpolazione
- Modalità bordo
- Bitmap di output
- Requisiti
- Argomenti correlati
Immagine di esempio
Prima |
---|
After |
ComPtr<ID2D1Effect> perspectiveTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D13DPerspectiveTransform, &perspectiveTransformEffect);
perspectiveTransformEffect->SetInput(0, bitmap);
perspectiveTransformEffect->SetValue(D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN, D2D1::Vector3F(0.0f, 192.0f, 0.0f));
perspectiveTransformEffect->SetValue(D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION, D2D1::Vector3F(0.0f, 30.0f, 0.0f));
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(perspectiveTransformEffect.Get());
m_d2dContext->EndDraw();
Proprietà dell'effetto
Enumerazione nome visualizzato e indice | Descrizione |
---|---|
InterpolationMode D2D1_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE. Il valore predefinito è D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR. |
BorderMode D2D1_3DPERSPECTIVETRANSFORM_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. |
Profondità D2D1_3DPERSPECTIVETRANSFORM_PROP_DEPTH |
Distanza tra PerspectiveOrigin e il piano di proiezione. Il valore specificato in DIP e deve essere maggiore di 0. Il tipo è FLOAT. Il valore predefinito è 1000,0f. |
PerspectiveOrigin D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN |
Posizione X e Y del visualizzatore nella scena 3D. Questa proprietà è una D2D1_VECTOR_2F definita come: (punto X, punto Y). Le unità sono in DIP. Impostare il valore Z con la proprietà Depth . Il tipo è D2D1_VECTOR_2F. Il valore predefinito è {0.0f, 0.0f}. |
LocalOffset D2D1_3DPERSPECTIVETRANSFORM_PROP_LOCAL_OFFSET |
Conversione eseguita dall'effetto prima di ruotare il piano di proiezione. Questa proprietà è una D2D1_VECTOR_3F definita come: (X, Y, Z). Le unità sono in DIP. Il tipo è D2D1_VECTOR_3F. Il valore predefinito è {0.0f, 0.0f, 0.0f}. |
GlobalOffset D2D1_3DPERSPECTIVETRANSFORM_PROP_GLOBAL_OFFSET |
Conversione eseguita dopo la rotazione del piano di proiezione. Questa proprietà è una D2D1_VECTOR_3F definita come: (X, Y, Z). Le unità sono in DIP. Il tipo è D2D1_VECTOR_3F. Il valore predefinito è {0.0f, 0.0f, 0.0f}. |
RotationOrigin D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION_ORIGIN |
Punto centrale della rotazione eseguita dall'effetto. Questa proprietà è una D2D1_VECTOR_3F definita come: (X, Y, Z). Le unità sono in DIP. Il tipo è D2D1_VECTOR_3F. Il valore predefinito è {0.0f, 0.0f, 0.0f}. |
Rotazione D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION |
Angoli di rotazione per ogni asse. Questa proprietà è una D2D1_VECTOR_3F definita come: (X, Y, Z). Le unità sono in gradi. Il tipo è D2D1_VECTOR_3F. Il valore predefinito è {0.0f, 0.0f, 0.0f}. |
Modalità di interpolazione
Enumerazione | Descrizione |
---|---|
D2D1_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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 riquadri l'immagine con pixel neri trasparenti durante l'interpolazione, causando un bordo morbido. |
D2D1_BORDER_MODE_HARD | L'effetto blocca l'output alle dimensioni dell'immagine di input. |
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 |