Udostępnij za pośrednictwem


Efekt transferu tabeli

Użyj efektu transferu tabeli, aby zmapować wzrost kolorów obrazu przy użyciu funkcji transferu utworzonej na podstawie interpolacji listy podanych wartości.

Identyfikator CLSID dla tego efektu jest CLSID_D2D1TableTransfer.

Przykładowy obraz

Na poniższej ilustracji przedstawiono dane wejściowe i wyjściowe efektu transferu tabeli.

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

tableTransferEffect->SetInput(0, bitmap);

float table[2] = {0.75f, 1.0f};
tableTransferEffect->SetValue(D2D1_TABLETRANSFER_PROP_BLUE_TABLE, table);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(tableTransferEffect.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 wyjściowych, C można obliczyć przy użyciu równania.

Dla wartości C wybierz wartość k, tak aby: k/N = C < (k+1)/N

Dane wyjściowe C są obliczane przy użyciu następującego równania: C' = V? + (C - k/N) * N * (V??? 1? - V?)

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

Oto jak wygląda wykres funkcji transferu tabel, jeśli właściwość tabeli jest ustawiona na [0.0, 0.25, 1.0].

wykres intensywności pikseli dla funkcji transferu tabeli.

Właściwości efektu

Nuta

Wartości wszystkich kanałów właściwości transferu tabeli 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_TABLETRANSFER_PROP_RED_TABLE
FLOAT[]
{0.0f, 1.0f}
Lista wartości używanych do definiowania funkcji transferu dla kanału czerwonego.
RedDisable
D2D1_TABLETRANSFER_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, zastosuje funkcję RedTableTransfer do kanału Czerwony.
GreenTable
D2D1_TABLETRANSFER_PROP_GREEN_TABLE
FLOAT[]
{0.0f, 1.0f}
Lista wartości używanych do definiowania funkcji transferu dla kanału Green.
GreenDisable
D2D1_TABLETRANSFER_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, zastosuje funkcję GreenTableTransfer do kanału Green.
BlueTable
D2D1_TABLETRANSFER_PROP_BLUE_TABLE
FLOAT[]
{0.0f, 1.0f}
Lista wartości używanych do definiowania funkcji transferu dla kanału Niebieskiego.
BlueDisable
D2D1_TABLETRANSFER_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, zastosuje funkcję BlueTableTransfer do kanału Blue.
AlfaTable
D2D1_TABLE_TRANSFER_PROP_ALPHA_TABLE
FLOAT[]
{0.0f, 1.0f}
Lista wartości używanych do definiowania funkcji transferu dla kanału Alpha.
AlphaDisable
D2D1_TABLETRANSFER_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, zastosuje funkcję AlphaTableTransfer do kanału Alpha.
ClampOutput
D2D1_TABLETRANSFER_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