Effetto di trasferimento discreto
Usare l'effetto di trasferimento discreto per eseguire il mapping delle intensità di colore di un'immagine usando una funzione di trasferimento dei passaggi creata da un elenco di valori specificati.
Il CLSID per questo effetto è CLSID_D2D1DiscreteTransfer.
Immagine di esempio
L'immagine mostra l'input e l'output dell'effetto di trasferimento discreto.
Prima |
---|
![]() |
Dopo |
![]() |
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 si basa 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:
L'output C può essere calcolato usando l'equazione: C' = V?
Questo effetto funziona sulle immagini alfa dritte e premoltiplicate. L'effetto restituisce bitmap alfa premoltiplicate.
Di seguito è riportato l'aspetto del grafico della funzione di trasferimento discreto se gli input sono [0.25, 0.5, 0.75, 1.0]
.
Proprietà dell'effetto
Nota
I valori di tutti i canali delle proprietà di trasferimento discreti sono senza unità e hanno almeno 0,0 e un massimo di 1,0.
Enumerazione del nome visualizzato e dell'indice | Tipo e valore predefinito | Descrizione |
---|---|---|
Tabella redtable D2D1_DISCRETETRANSFER_PROP_RED_TABLE |
FLOAT[] {0.0f, 1.0f} |
Elenco di valori usati per definire la funzione di trasferimento per il canale Red. |
RedDisable D2D1_DISCRETETRANSFER_PROP_RED_DISABLE |
BOOL FALSO |
Se si imposta questa proprietà su TRUE, l'effetto non applica la funzione di trasferimento al canale Rosso. Se si imposta questa proprietà su FALSE, l'effetto applica la funzione RedDiscreteTransfer al canale Red. |
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 FALSO |
Se si imposta questa proprietà su TRUE, l'effetto non applica la funzione di trasferimento al canale Verde. Se si imposta questa proprietà 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 Blue. |
BlueDisable D2D1_DISCRETETRANSFER_PROP_BLUE_DISABLE |
BOOL FALSO |
Se si imposta questa proprietà su TRUE, l'effetto non applica la funzione di trasferimento al canale Blue. Se si imposta questa proprietà su FALSE, l'effetto applica la funzione BlueDiscreteTransfer al canale Blue. |
AlphaTable D2D1_DISCRETETRANSFER_PROP_ALPHA_TABLE |
FLOAT[] {0.0f, 1.0f} |
Elenco di valori che definiscono la funzione di trasferimento per il canale Alfa. |
AlphaDisable D2D1_DISCRETETRANSFER_PROP_ALPHA_DISABLE |
BOOL FALSO |
Se si imposta questa proprietà su TRUE, l'effetto non applica la funzione di trasferimento al canale Alfa. Se si imposta questa proprietà su FALSE, l'effetto applica la funzione AlphaDiscreteTransfer al canale Alfa. |
ClampOutput D2D1_DISCRETETRANSFER_PROP_CLAMP_OUTPUT |
BOOL FALSO |
Indica se l'effetto blocca i valori di colore su tra 0 e 1 prima che l'effetto passi i valori all'effetto successivo nel grafico. L'effetto blocca i valori prima di premoltiplicare l'alfa. Se si imposta questa proprietà su TRUE, l'effetto bloccherà i valori. Se si imposta questa proprietà 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 sufficientemente precisi. |
Fabbisogno
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 |
Biblioteca | d2d1.lib, dxguid.lib |