Udostępnij za pośrednictwem


Efekt dyskretnego transferu

Użyj efektu transferu dyskretnego, aby zamapować wzrost kolorów obrazu przy użyciu funkcji transferu kroków utworzonej na podstawie podanej listy wartości.

Identyfikator CLSID dla tego efektu jest CLSID_D2D1DiscreteTransfer.

Przykładowy obraz

Na tym obrazie przedstawiono dane wejściowe i wyjściowe efektu dyskretnego transferu.

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

discreteTransferEffect->SetInput(0, bitmap);

float table[3] = {0.0f, 0.5f, 1.0f};
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_RED_TABLE, table);
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_GREEN_TABLE, table);
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_BLUE_TABLE, table);

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

Funkcja transferu jest oparta na liście danych wejściowych: V=(V0,V1,V2,V3,V? ,VN), gdzie N jest liczbą elementów - 1.

Intensywność pikseli wejściowych jest reprezentowana jako C. Intensywność pikseli danych wyjściowych, C jest obliczana przy użyciu równania:

W przypadku wartości C wybierz wartość k, tak aby:

formułę procesu.

Dane wyjściowe języka C można obliczyć przy użyciu równania: C' = V?

Ten efekt działa na prostych i premultiplied obrazów alfa. Efekt generuje premultiplied mapy bitowe alfa.

Oto jak wygląda wykres funkcji dyskretnego transferu, jeśli dane wejściowe są [0.25, 0.5, 0.75, 1.0].

wykres intensywności pikseli dla funkcji transferu dyskretnego.

Właściwości efektu

Nuta

Wartości wszystkich kanałów właściwości dyskretnego transferu są bezjednostki i mają co najmniej 0,0 i maksymalnie 1,0.

Nazwa wyświetlana i wyliczenie indeksu Typ i wartość domyślna Opis
RedTable
D2D1_DISCRETETRANSFER_PROP_RED_TABLE
FLOAT[]
{0.0f, 1.0f}
Lista wartości używanych do definiowania funkcji transferu dla kanału czerwonego.
RedDisable
D2D1_DISCRETETRANSFER_PROP_RED_DISABLE
BOOL
FAŁSZYWY
Jeśli ustawisz wartość TRUE, efekt nie zastosuje funkcji transferu do kanału Red. Jeśli ustawisz wartość FALSE, efekt zastosuje funkcję RedDiscreteTransfer do kanału Red.
GreenTable
D2D1_DISCRETETRANSFER_PROP_GREEN_TABLE
FLOAT[]
{0.0f, 1.0f}
Lista wartości definiujących funkcję transferu dla kanału Green.
GreenDisable
D2D1_DISCRETETRANSFER_PROP_GREEN_DISABLE
BOOL
FAŁSZYWY
Jeśli ustawisz wartość TRUE, efekt nie zastosuje funkcji transferu do kanału Green. Jeśli ustawisz wartość FALSE, efekt zastosuje funkcję GreenDiscreteTransfer do kanału Green.
BlueTable
D2D1_DISCRETETRANSFER_PROP_BLUE_TABLE
FLOAT[]
{0.0f, 1.0f}
Lista wartości definiujących funkcję transferu dla kanału Niebieskiego.
BlueDisable
D2D1_DISCRETETRANSFER_PROP_BLUE_DISABLE
BOOL
FAŁSZYWY
Jeśli ustawisz wartość TRUE, efekt nie zastosuje funkcji transferu do kanału Niebieski. Jeśli ustawisz wartość FALSE, efekt zastosuje funkcję BlueDiscreteTransfer do kanału Blue.
AlfaTable
D2D1_DISCRETETRANSFER_PROP_ALPHA_TABLE
FLOAT[]
{0.0f, 1.0f}
Lista wartości definiujących funkcję transferu dla kanału Alpha.
AlphaDisable
D2D1_DISCRETETRANSFER_PROP_ALPHA_DISABLE
BOOL
FAŁSZYWY
Jeśli ustawisz wartość TRUE, efekt nie zastosuje funkcji transferu do kanału Alpha. Jeśli ustawisz wartość FALSE, efekt zastosuje funkcję AlphaDiscreteTransfer do kanału Alpha.
ClampOutput
D2D1_DISCRETETRANSFER_PROP_CLAMP_OUTPUT
BOOL
FAŁSZYWY
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.

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