Udostępnij za pośrednictwem


Efekt macierzy kolorów

Użyj efektu macierzy kolorów, aby zmienić wartości RGBA mapy bitowej.

Możesz użyć tego efektu, aby:

  • Usuń kanał kolorów z obrazu.
  • Zmniejsz kolor na obrazie.
  • Zamień kanały kolorów.
  • Połącz kanały kolorów.

Wiele wbudowanych efektów to specjalizacje macierzy kolorów zoptymalizowane pod kątem zamierzonego użycia efektów. Przykłady obejmują nasycenie , odcienie obracania, sepiioraz temperaturę i odcień.

Identyfikator CLSID dla tego efektu jest CLSID_D2D1ColorMatrix.

Przykładowy obraz

W tym przykładzie przedstawiono obrazy wejściowe i wyjściowe efektu macierzy kolorów, który zamienia czerwone i niebieskie kanały.

Przed
obraz przed efektem.
Po
obraz po przekształceniu.
ComPtr<ID2D1Effect> colorMatrixEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ColorMatrix, &colorMatrixEffect);

colorMatrixEffect->SetInput(0, bitmap);
D2D1_MATRIX_5X4_F matrix = D2D1::Matrix5x4F(0, 0, 1, 0,   0, 1, 0, 0,   1, 0, 0, 0,   0, 0, 0, 1,   0, 0, 0, 0);
colorMatrixEffect->SetValue(D2D1_COLORMATRIX_PROP_COLOR_MATRIX, matrix);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(colorMatrixEffect.Get());
m_d2dContext->EndDraw();

Ten efekt mnoży wartości RGBA obrazu przez macierz główną kolumny 5x4, jak pokazano w tym równaniu.

przykładową definicję macierzy.

Ten efekt działa na prostych i premultiplied obrazów alfa.

Właściwości efektu

Nazwa wyświetlana i wyliczenie indeksu Opis
ColorMatrix
D2D1_COLORMATRIX_PROP_COLOR_MATRIX
Macierz 5x4 wartości zmiennoprzecinkowych. Elementy macierzy nie są ograniczone i nie są jednostkowe.
Wartością domyślną jest macierz tożsamości.
Typ jest D2D1_MATRIX_5X4_F.
Wartość domyślna to Matrix5x4F(1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0).
AlphaMode
D2D1_COLORMATRIX_PROP_ALPHA_MODE
Tryb alfa danych wyjściowych. Aby uzyskać więcej informacji, zobacz tryby alfa.
Typ jest D2D1_COLORMATRIX_ALPHA_MODE.
Wartość domyślna to D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED.
ClampOutput
D2D1_COLORMATRIX_PROP_CLAMP_OUTPUT
Czy efekt zaciska wartości kolorów z zakresu od 0 do 1 przed przekazaniem wartości do następnego efektu na wykresie. Efekt zaciska wartości przed premultiplies alfa .
Jeśli ustawisz wartość TRUE, efekt będzie zaciskać wartości. Jeśli ustawisz wartość FALSE, efekt nie zacisnie wartości kolorów, ale inne efekty, a powierzchnia wyjściowa może zacisać wartości, jeśli nie są wystarczająco precyzyjne.
Typ to BOOL.
Wartość domyślna to FALSE.

Tryby alfa

Nazwa Opis
D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED Efekt un-premultipliplies dane wejściowe, stosuje macierz kolorów i premultiplies dane wyjściowe.
D2D1_COLORMATRIX_ALPHA_MODE_STRAIGHT Efekt stosuje macierz kolorów bezpośrednio do danych wejściowych i nie premultiply danych wyjściowych.

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