Partilhar via


Efeito morfológico

Use o efeito morfológico para diluir ou engrossar os limites das bordas em uma imagem. Esse efeito cria um kernel que é 2 vezes os valores de Width e Height especificados. Este efeito centra o kernel no pixel que está a calcular e devolve o valor máximo no kernel (se estiver a dilatar) ou o valor mínimo no kernel (se estiver a erodir).

O CLSID para este efeito é CLSID_D2D1Morphology.

Imagens de exemplo

Este exemplo mostra a saída do efeito ao usar o modo de erosão.

Antes
a imagem antes do efeito.
Após
a imagem após a transformação.
ComPtr<ID2D1Effect> morphologyEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Morphology, &morphologyEffect);

morphologyEffect->SetInput(0, bitmap);

morphologyEffect->SetValue(D2D1_MORPHOLOGY_PROP_MODE, D2D1_MORPHOLOGY_MODE_ERODE);
morphologyEffect->SetValue(D2D1_MORPHOLOGY_PROP_WIDTH, 14);

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

Propriedades do efeito

Nome para exibição e enumeração de índice Tipo e valor padrão Descrição
Modo
D2D1_MORPHOLOGY_PROP_MODE
D2D1_MORPHOLOGY_MODE
D2D1_MORPHOLOGY_MODE_ERODE
O modo morfológico. Os modos disponíveis são erodir (achatar) e dilatar (engrossar).
Consulte Modos de morfologia para obter mais informações.
Largura
D2D1_MORPHOLOGY_PROP_WIDTH
UINT
1
Tamanho do kernel na direção X. As unidades estão em DIPs. Os valores devem estar entre 1 e 100 inclusive.
Altura
D2D1_MORPHOLOGY_PROP_HEIGHT
UINT
1
Tamanho do kernel na direção Y. As unidades estão em DIPs. Os valores devem estar entre 1 e 100 inclusive.

Modos morfológicos

Designação Descrição
D2D1_MORPHOLOGY_MODE_ERODE O valor mínimo de cada canal RGB no kernel é usado.
D2D1_MORPHOLOGY_MODE_DILATE O valor máximo de cada canal RGB no kernel é usado.

Bitmap de saída

Para o modo DILATE, o tamanho do bitmap de saída aumenta:

Exigência Valor
Crescimento do bitmap de saída X = INT(FLOAT(Largura) * ((Usuário DPI) / 96))
Crescimento do bitmap de saída Y = INT(FLOAT(Altura) * ((Usuário DPI) / 96))

Para o modo ERODE, o tamanho do bitmap de saída diminui:

Exigência Valor
Crescimento do bitmap de saída X = INT(FLOAT(-Width) * ((Usuário DPI) / 96))
Crescimento do bitmap de saída Y = INT(FLOAT(-Height) * ((Usuário DPI) / 96))

Requerimentos

Exigência Valor
Cliente mínimo suportado Windows 8 e Atualização da Plataforma para Windows 7 [aplicações de ambiente de trabalho | Aplicações da Loja Windows]
Servidor mínimo suportado Windows 8 e Atualização da Plataforma para Windows 7 [aplicações de ambiente de trabalho | Aplicações da Loja Windows]
Cabeçalho d2d1effects.h
Biblioteca d2d1.lib, dxguid.lib

ID2D1Effect