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
- właściwości Efekt
- wymagania dotyczące
- Tematy pokrewne
Przykładowy obraz
Na tym obrazie przedstawiono dane wejściowe i wyjściowe efektu dyskretnego transferu.
Przed |
---|
![]() |
Po |
![]() |
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:
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]
.
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 |