Efekt cienia
Użyj efektu cienia, aby wygenerować cień z kanału alfa obrazu. Cień jest bardziej nieprzezroczysty dla wyższych wartości alfa i bardziej przezroczysty dla niższych wartości alfa. Można ustawić ilość rozmycia i koloru cienia.
- przykładowy obraz
- właściwości Efekt
- tryby optymalizacji
- danych bitowych wyjściowych
- wymagania dotyczące
- Tematy pokrewne
Identyfikator CLSID dla tego efektu jest CLSID_D2D1Shadow.
Przykładowy obraz
W tym przykładzie pokazano dane wyjściowe efektu cienia przetłumaczone w dół i bezpośrednio z obrazem źródłowym złożonym na nim w oryginalnej lokalizacji. Efekt cienia generuje tylko cień.
Przed |
---|
![]() |
Po |
![]() |
ComPtr<ID2D1Effect> shadowEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Shadow, &shadowEffect);
shadowEffect->SetInput(0, bitmap);
// Shadow is composited on top of a white surface to show opacity.
ComPtr<ID2D1Effect> floodEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Flood, &floodEffect);
floodEffect->SetValue(D2D1_FLOOD_PROP_COLOR, D2D1::Vector4F(1.0f, 1.0f, 1.0f, 1.0f));
ComPtr<ID2D1Effect> affineTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D12DAffineTransform, &affineTransformEffect);
affineTransformEffect->SetInputEffect(0, shadowEffect.Get());
D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F::Translation(20, 20));
affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
ComPtr<ID2D1Effect> compositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Composite, &compositeEffect);
compositeEffect->SetInputEffect(0, floodEffect.Get());
compositeEffect->SetInputEffect(1, affineTransformEffect.Get());
compositeEffect->SetInput(2, bitmap);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(compositeEffect.Get());
m_d2dContext->EndDraw();
Właściwości efektu
Nazwa wyświetlana i wyliczenie indeksu | Opis |
---|---|
BlurStandardDeviation D2D1_SHADOW_PROP_BLUR_STANDARD_DEVIATION |
Ilość rozmycia do kanału alfa obrazu. Promień rozmycia jądra można obliczyć, mnożąc odchylenie standardowe przez 3. Jednostki zarówno odchylenia standardowego, jak i promienia rozmycia to DIPs. Ta właściwość jest taka sama jak właściwość Gaussian Blur właściwości odchylenia standardowego. Typ to FLOAT. Wartość domyślna to 3.0f. |
Kolor D2D1_SHADOW_PROP_COLOR |
Kolor cienia kropli. Ta właściwość jest D2D1_VECTOR_4F zdefiniowana jako: (R, G, B, A). Należy określić ten kolor w prostej alfa. Typ to D2D1_VECTOR_4F. Wartość domyślna to {0.0f, 0.0f, 0.0f, 1.0f}. |
Optymalizacja D2D1_SHADOW_PROP_OPTIMIZATION |
Poziom optymalizacji wydajności. Typ to D2D1_SHADOW_OPTIMIZATION. Wartość domyślna to D2D1_SHADOW_OPTIMIZATION_BALANCED. |
Tryby optymalizacji
Nazwa | Opis |
---|---|
D2D1_DIRECTIONALBLUR_OPTIMIZATION_SPEED | Stosuje optymalizacje wewnętrzne, takie jak wstępne skalowanie na stosunkowo małym promieniu. Używa filtrowania liniowego. |
D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED | Używa tych samych progów optymalizacji co tryb szybkości, ale używa filtrowania trójliniowego. |
D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY | Używa tylko optymalizacji wewnętrznych z dużym promieniem rozmycia, gdzie przybliżenia są mniej prawdopodobne, aby być widoczne. Używa filtrowania trójliniowego. |
Mapa bitowa wyjściowa
Rozmiar wyjściowej mapy bitowej to rozmiar danych wyjściowych rozmycia. Wielkość wzrostu wyjściowej mapy bitowej względem oryginalnej mapy bitowej można obliczyć przy użyciu następującego równania:
Wzrost wyjściowej mapy bitowej (X i Y) = RozmycieStandardDeviation (piksele niezależne od urządzenia)*6*(DPI użytkownika)/96
Dane wyjściowe rosną równie w każdym kierunku, więc na przykład jeśli rozmiar wzrośnie o 10 pikseli w każdym kierunku, lewy górny róg mapy bitowej znajduje się w lokalizacji (-5, -5), a prawy dolny będzie na (105, 105), jak pokazano na poniższym diagramie.
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 |