Condividi tramite


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

Prima
immagine prima della trasformazione.
After
l'immagine dopo la trasformazione.
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.
Matrice di profondità 3D Dove:
X, Y, Z = Coordinate del piano di proiezione di input
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. matrice scale3d
AsimmetriaX(X) Genera una matrice di trasformazione che inclina il piano di proiezione nella direzione X. Mostra una matrice di asimmetria nella direzione X.
Asimmetria (Y) Genera una matrice di trasformazione che inclina il piano di proiezione nella direzione Y. Matrice di asimmetria
Translation(X, Y, Z) Genera una matrice di trasformazione che converte il piano di proiezione nella direzione X, Y o Z. traduci matrice
RotationX(X) Genera una matrice di trasformazione che ruota il piano di proiezione sull'asse X. ruotare la matrice x
Rotazione (Y) Genera una matrice di trasformazione che ruota il piano di proiezione sull'asse Y. ruotare la matrice y
RotationZ(Z) Genera una matrice di trasformazione che ruota il piano di proiezione sull'asse Z. ruotare la matrice z
PerspectiveProjection(D) Trasformazione prospettica con un valore di profondità D. matrice prospettica
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

ID2D1Effect