Udostępnij za pośrednictwem


Efekt transformacji 3D

Użyj efektu przekształcenia 3D, aby zastosować dowolną macierz transformacji 4x4 do obrazu.

Ten efekt dotyczy macierzy (M?) podanej do wierzchołków rogu obrazu źródłowego ([ x y z 1 ]) przy użyciu tego obliczenia:

[ xr yr zr 1 ]=[ x y z 1 ]*M?

Identyfikator CLSID dla tego efektu jest CLSID_D2D13DTransform.

Przykładowy obraz

Przed
obraz przed przekształceniem.
Po
obraz po przekształceniu.
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();

Właściwości efektu

Nazwa wyświetlana i wyliczenie indeksu Opis
InterpolacjaMode
D2D1_3DTRANSFORM_PROP_INTERPOLATION_MODE
Tryb interpolacji, który jest używany na obrazie. Istnieje 5 trybów skalowania, które wahają się w zakresie jakości i szybkości.
Typ to D2D1_3DTRANSFORM_INTERPOLATION_MODE.
Wartość domyślna to D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR.
BorderMode
D2D1_3DTRANSFORM_PROP_BORDER_MODE
Tryb używany do obliczania obramowania obrazu, miękkiego lub twardego. Aby uzyskać więcej informacji, zobacz Tryby obramowania.
Typ to D2D1_BORDER_MODE.
Wartość domyślna to D2D1_BORDER_MODE_SOFT.
TransformMatrix
D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX
Macierz przekształcania 4x4 zastosowana do płaszczyzny projekcji. Poniższe obliczenie macierzy służy do mapowania punktów z jednego układu współrzędnych 3D na przekształcony układ współrzędnych 2D.
macierz głębokości 3D gdzie:
X, Y, Z = współrzędne płaszczyzny projekcji wejściowej
Mx,y = elementy macierzy przekształcenia
X , Y , Z = współrzędne płaszczyzny projekcji wyjściowej

Poszczególne elementy macierzy nie są ograniczone i nie są jednostkowe.
Typ to D2D1_MATRIX_4X4_F.
Wartość domyślna to Matrix4x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1).

Tryby interpolacji

Wyliczenie Opis
D2D1_3DTRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR Próbkuje najbliższy pojedynczy punkt i używa go. Ten tryb używa mniej czasu przetwarzania, ale generuje obraz o najniższej jakości.
D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR Używa próbki czterech punktów i interpolacji liniowej. Ten tryb używa więcej czasu przetwarzania niż tryb najbliższego sąsiada, ale generuje obraz o wyższej jakości.
D2D1_3DTRANSFORM_INTERPOLATION_MODE_CUBIC Używa 16 przykładowego jądra sześciennego do interpolacji. Ten tryb używa najbardziej czasu przetwarzania, ale generuje obraz o wyższej jakości.
D2D1_3DTRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR Używa 4 próbek liniowych w jednym pikselu do dobrego anty aliasowania krawędzi. Ten tryb jest dobry do skalowania w dół o małe ilości na obrazach z kilkoma pikselami.
D2D1_3DTRANSFORM_INTERPOLATION_MODE_ANISOTROPIC Używa filtrowania anisotropowego do próbkowania wzorca zgodnie z przekształconym kształtem mapy bitowej.

Nuta

Jeśli nie wybierzesz trybu, efekt zostanie domyślnie D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR.

Nuta

Tryb anisotropowy generuje mapę mipmap podczas skalowania, jednak jeśli ustawisz właściwość Cached na wartość true dla efektów, które są danymi wejściowymi tego efektu, mipmapy nie będą generowane za każdym razem dla wystarczająco małych obrazów.

Tryby obramowania

Nazwa Opis
D2D1_BORDER_MODE_SOFT Efekt podpełnia obraz przezroczystymi czarnymi pikselami, ponieważ interpoluje, co powoduje miękką krawędź.
D2D1_BORDER_MODE_HARD Efekt zaciska dane wyjściowe do rozmiaru obrazu wejściowego.

Klasa macierzy przekształcania 4x4

Direct2D udostępnia klasę macierzy 4x4, która zapewnia funkcje pomocnicze do przekształcania obrazu w 3 wymiarach. Aby uzyskać więcej informacji i opis wszystkich składowych klas, zobacz temat Matrix4x4F.

Funkcja Opis Matryca
Matrix4x4F::Scale(X, Y, Z) Generuje macierz przekształcania, która skaluje płaszczyznę projekcji w kierunku X, Y i/lub Z. macierz skalowana 3d
Niesymetryczność (X) Generuje macierz przekształcania, która wypacza płaszczyznę projekcji w kierunku X. Pokazuje macierz niesymetryczności w kierunku X.
Niesymetryczność (Y) Generuje macierz przekształcania, która wypacza płaszczyznę projekcji w kierunku Y. macierzy niesymetrycznej
Translation(X, Y, Z) Generuje macierz przekształcania, która tłumaczy płaszczyznę projekcji w kierunku X, Y lub Z. tłumaczenie macierzy
RotationX(X) Generuje macierz przekształcania, która obraca płaszczyznę projekcji na osi X. obracanie x macierzy
Rotacja (Y) Generuje macierz przekształcania, która obraca płaszczyznę projekcji na osi Y. obracanie macierzy y
RotationZ(Z) Generuje macierz przekształcania, która obraca płaszczyznę projekcji na osi Z. obracanie macierzy z
PerspectiveProjection(D) Transformacja perspektywy z wartością głębokości D. macierz perspektyw
RotationArbitraryAxis(X, Y, Z, stopnie) Obraca płaszczyznę projekcji o określonej osi.

Wymagania

Wymaganie Wartość
Minimalny obsługiwany klient Windows 8 i aktualizacja platformy dla systemu Windows 7 [aplikacje klasyczne | Aplikacje ze Sklepu Windows]
Minimalny obsługiwany serwer Windows 8 i aktualizacja platformy dla systemu Windows 7 [aplikacje klasyczne | Aplikacje ze Sklepu Windows]
Nagłówek d2d1effects.h
Biblioteka d2d1.lib, dxguid.lib

ID2D1Effect