Efekt transformacji perspektywy 3D
Użyj efektu przekształcenia perspektywy 3D, aby obrócić obraz w 3 wymiarach tak, jakby był wyświetlany z odległości.
Transformacja perspektywy 3D jest wygodniejsza niż efekt transformacji 3D, ale uwidacznia tylko podzbiór funkcji. Możesz obliczyć pełną macierz transformacji 3D i zastosować bardziej dowolną macierz transformacji do obrazu przy użyciu efektu transformacji 3D.
Identyfikator CLSID dla tego efektu jest CLSID_D2D13DPerspectiveTransform.
- przykładowy obraz
- właściwości Efekt
- Tryby interpolacji
- tryby obramowania
- danych bitowych wyjściowych
- wymagania dotyczące
- Tematy pokrewne
Przykładowy obraz
Przed |
---|
![]() |
Po |
![]() |
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();
Właściwości efektu
Nazwa wyświetlana i wyliczenie indeksu | Opis |
---|---|
InterpolacjaMode D2D1_3DPERSPECTIVETRANSFORM_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 jest D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE. Wartość domyślna to D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR. |
BorderMode D2D1_3DPERSPECTIVETRANSFORM_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. |
Głębokość D2D1_3DPERSPECTIVETRANSFORM_PROP_DEPTH |
Odległość od PerspectiveOrigin do płaszczyzny projekcji. Wartość określona w dips i musi być większa niż 0. Typ to FLOAT. Wartość domyślna to 1000.0f. |
PerspektywaOrigin D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN |
Lokalizacja X i Y przeglądarki w scenie 3D. Ta właściwość jest D2D1_VECTOR_2F zdefiniowana jako: (punkt X, punkt Y). Jednostki znajdują się w adresach IP. Wartość Z należy ustawić za pomocą właściwości głębokości. Typ jest D2D1_VECTOR_2F. Wartość domyślna to {0.0f, 0.0f}. |
LocalOffset D2D1_3DPERSPECTIVETRANSFORM_PROP_LOCAL_OFFSET |
Tłumaczenie efektu wykonuje przed obracanie płaszczyzny projekcji. Ta właściwość jest D2D1_VECTOR_3F zdefiniowana jako: (X, Y, Z). Jednostki znajdują się w adresach IP. Typ jest D2D1_VECTOR_3F. Wartość domyślna to {0.0f, 0.0f, 0.0f}. |
GlobalOffset D2D1_3DPERSPECTIVETRANSFORM_PROP_GLOBAL_OFFSET |
Tłumaczenie efektu wykonuje po obróceniu płaszczyzny projekcji. Ta właściwość jest D2D1_VECTOR_3F zdefiniowana jako: (X, Y, Z). Jednostki znajdują się w adresach IP. Typ jest D2D1_VECTOR_3F. Wartość domyślna to {0.0f, 0.0f, 0.0f}. |
RotationOrigin D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION_ORIGIN |
Punkt środkowy obrotu, który wykonuje efekt. Ta właściwość jest D2D1_VECTOR_3F zdefiniowana jako: (X, Y, Z). Jednostki znajdują się w adresach IP. Typ jest D2D1_VECTOR_3F. Wartość domyślna to {0.0f, 0.0f, 0.0f}. |
Obrót D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION |
Kąty obrotu dla każdej osi. Ta właściwość jest D2D1_VECTOR_3F zdefiniowana jako: (X, Y, Z). Jednostki są w stopniach. Typ jest D2D1_VECTOR_3F. Wartość domyślna to {0.0f, 0.0f, 0.0f}. |
Tryby interpolacji
Wyliczenie | Opis |
---|---|
D2D1_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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. |
Mapa bitowa wyjściowa
Rozmiar mapy bitowej wyjściowej zależy od macierzy transformacji stosowanej do obrazu.
Efekt wykonuje operację przekształcania, a następnie stosuje pole ograniczenia wokół wyniku. Mapa bitowa danych wyjściowych jest rozmiarem pola ograniczenia.
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 |