Condividi tramite


Effetto trasferimento discreto

Usare l'effetto di trasferimento discreto per eseguire il mapping delle intensità di colore di un'immagine usando una funzione di trasferimento passo creata da un elenco di valori specificati.

ClSID per questo effetto è CLSID_D2D1DiscreteTransfer.

Immagine di esempio

L'immagine seguente mostra l'input e l'output dell'effetto di trasferimento discreto.

Prima
immagine prima dell'effetto.
After
immagine dopo la trasformazione.
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();

La funzione di trasferimento è basata sull'elenco di input: V=(V0,V1,V2,V3,V? ,VN) dove N è il numero di elementi - 1.

L'intensità del pixel di input è rappresentata come C. L'intensità del pixel di output, C viene calcolata con l'equazione:

Per un valore C, selezionare un valore k, in modo che:

formula per il processo.

L'output C può essere calcolato usando l'equazione: C' = V?

Questo effetto funziona su immagini alfa dritte e premultiplied. L'effetto restituisce bitmap alfa premultiplied.

Ecco il grafico della funzione di trasferimento discreto come se gli input siano [0.25, 0.5, 0.75, 1.0].

grafico dell'intensità pixel per la funzione di trasferimento discreto.

Proprietà dell'effetto

Nota

I valori di tutti i canali delle proprietà di trasferimento discreti sono unitless e hanno un minimo di 0,0 e un massimo di 1,0.

Enumerazione nome visualizzato e indice Tipo e valore predefinito Descrizione
RedTable
D2D1_DISCRETETRANSFER_PROP_RED_TABLE
FLOAT[]
{0.0f, 1.0f}
Elenco di valori usati per definire la funzione di trasferimento per il canale Rosso.
RedDisable
D2D1_DISCRETETRANSFER_PROP_RED_DISABLE
BOOL
FALSE
Se si imposta questa opzione su TRUE, l'effetto non applica la funzione di trasferimento al canale Rosso. Se si imposta questa opzione su FALSE, l'effetto applica la funzione RedDiscreteTransfer al canale Rosso.
GreenTable
D2D1_DISCRETETRANSFER_PROP_GREEN_TABLE
FLOAT[]
{0.0f, 1.0f}
Elenco di valori che definiscono la funzione di trasferimento per il canale Verde.
GreenDisable
D2D1_DISCRETETRANSFER_PROP_GREEN_DISABLE
BOOL
FALSE
Se si imposta questa opzione su TRUE, l'effetto non applica la funzione di trasferimento al canale Verde. Se si imposta questa opzione su FALSE, l'effetto applica la funzione GreenDiscreteTransfer al canale Verde.
BlueTable
D2D1_DISCRETETRANSFER_PROP_BLUE_TABLE
FLOAT[]
{0.0f, 1.0f}
Elenco di valori che definiscono la funzione di trasferimento per il canale Blu.
BlueDisable
D2D1_DISCRETETRANSFER_PROP_BLUE_DISABLE
BOOL
FALSE
Se si imposta questa opzione su TRUE, l'effetto non applica la funzione di trasferimento al canale Blu. Se si imposta questa opzione su FALSE, l'effetto applica la funzione BlueDiscreteTransfer al canale Blu.
AlphaTable
D2D1_DISCRETETRANSFER_PROP_ALPHA_TABLE
FLOAT[]
{0.0f, 1.0f}
Elenco di valori che definiscono la funzione di trasferimento per il canale Alfa.
AlfaDisable
D2D1_DISCRETETRANSFER_PROP_ALPHA_DISABLE
BOOL
FALSE
Se si imposta questa opzione su TRUE, l'effetto non applica la funzione di trasferimento al canale Alfa. Se si imposta questa opzione su FALSE, l'effetto applica la funzione AlphaDiscreteTransfer al canale Alfa.
ClampOutput
D2D1_DISCRETETRANSFER_PROP_CLAMP_OUTPUT
BOOL
FALSE
Se l'effetto blocca i valori di colore su 0 e 1 prima che l'effetto passi i valori all'effetto successivo nel grafico. L'effetto blocca i valori prima che premultipli l'alfa.
Se si imposta questa opzione su TRUE, l'effetto blocca i valori. Se si imposta questa opzione su FALSE, l'effetto non blocca i valori di colore, ma altri effetti e la superficie di output possono bloccare i valori se non sono di precisione sufficiente.

Requisiti

Requisito Valore
Client minimo supportato Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store]
Server minimo supportato Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store]
Intestazione d2d1effects.h
Libreria d2d1.lib, dxguid.lib

ID2D1Effect