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
- właściwości Efekt
- Tryby interpolacji
- tryby obramowania
- 4x4 Transform Matrix Class
- wymagania dotyczące
- Tematy pokrewne
Przykładowy obraz
Przed |
---|
![]() |
Po |
![]() |
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. ![]()
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 ![]() |
Niesymetryczność (X) | Generuje macierz przekształcania, która wypacza płaszczyznę projekcji w kierunku X. |
![]() |
Niesymetryczność (Y) | Generuje macierz przekształcania, która wypacza płaszczyznę projekcji w kierunku Y. |
![]() |
Translation(X, Y, Z) | Generuje macierz przekształcania, która tłumaczy płaszczyznę projekcji w kierunku X, Y lub Z. |
![]() |
RotationX(X) | Generuje macierz przekształcania, która obraca płaszczyznę projekcji na osi X. |
![]() |
Rotacja (Y) | Generuje macierz przekształcania, która obraca płaszczyznę projekcji na osi Y. |
![]() |
RotationZ(Z) | Generuje macierz przekształcania, która obraca płaszczyznę projekcji na osi 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 |