enumeração D2D1_ALPHA_MODE (dcommon.h)

Especifica como o valor alfa de um bitmap ou destino de renderização deve ser tratado.

Syntax

typedef enum D2D1_ALPHA_MODE {
  D2D1_ALPHA_MODE_UNKNOWN = 0,
  D2D1_ALPHA_MODE_PREMULTIPLIED = 1,
  D2D1_ALPHA_MODE_STRAIGHT = 2,
  D2D1_ALPHA_MODE_IGNORE = 3,
  D2D1_ALPHA_MODE_FORCE_DWORD = 0xffffffff
} ;

Constantes

 
D2D1_ALPHA_MODE_UNKNOWN
Valor: 0
O valor alfa pode não ser significativo.
D2D1_ALPHA_MODE_PREMULTIPLIED
Valor: 1
O valor alfa foi pré-multiplicado. Cada cor é dimensionada pela primeira vez pelo valor alfa. O valor alfa em si é o mesmo em alfa reto e pré-multiplicado. Normalmente, nenhum valor de canal de cor é maior que o valor do canal alfa. Se um valor de canal de cor em um formato pré-multiplicado for maior que o canal alfa, a matemática de combinação de fonte padrão resultará em uma mistura aditiva.
D2D1_ALPHA_MODE_STRAIGHT
Valor: 2
O valor alfa não foi pré-multiplicado. O canal alfa indica a transparência da cor.
D2D1_ALPHA_MODE_IGNORE
Valor: 3
O valor alfa é ignorado.
D2D1_ALPHA_MODE_FORCE_DWORD
Valor: 0xffffffff

Comentários

A enumeração D2D1_ALPHA_MODE é usada com a enumeração D2D1_PIXEL_FORMAT para especificar o modo alfa de um destino de renderização ou bitmap. Diferentes destinos de renderização e bitmaps dão suporte a modos alfa diferentes. Para obter uma lista, consulte Formatos de pixel com suporte e modos alfa.

As diferenças entre alfa reto e pré-multiplicado

Ao descrever uma cor RGBA usando alfa reto, o valor alfa da cor é armazenado no canal alfa. Por exemplo, para descrever uma cor vermelha que é 60% opaca, você usaria os seguintes valores: (255, 0, 0, 255 * 0,6) = (255, 0, 0, 153). O valor 255 indica vermelho completo e 153 (que é 60% de 255) indica que a cor deve ter uma opacidade de 60%.

Ao descrever uma cor RGBA usando alfa pré-multiplicado, cada cor é multiplicada pelo valor alfa: (255 * 0,6, 0 * 0,6, 0 * 0 *0,6, 255 * 0,6) = (153, 0, 0, 153).

Independentemente do modo alfa do destino de renderização, D2D1_COLOR_F valores são sempre interpretados como alfa reto. Por exemplo, ao especificar a cor de um ID2D1SolidColorBrush para uso com um bitmap que usa o modo alfa pré-multiplicado, você especificaria a cor exatamente como faria se o bitmap usasse alfa reto. Quando você pinta com o pincel, Direct2D converte a cor para o formato de destino para você.

Modo Alfa para Destinos de Renderização

Independentemente da configuração do modo alfa, o conteúdo de um destino de renderização dá suporte à transparência. Por exemplo, se você desenhar um retângulo vermelho parcialmente transparente com um destino de renderização com um modo alfa de D2D1_ALPHA_MODE_IGNORE, o retângulo aparecerá rosa (se a tela de fundo for branca), como você poderia esperar.

Se você desenhar um retângulo vermelho parcialmente transparente quando o modo alfa for o método CreateCompatibleRenderTarget ) para criar um bitmap que dê suporte à transparência.

Modos ClearType e Alpha

Se você especificar um modo alfa diferente de D2D1_ALPHA_MODE_IGNORE para um destino de renderização, o modo de suavização de texto será alterado automaticamente de D2D1_TEXT_ANTIALIAS_MODE CLEARTYPE para D2D1_TEXT_ANTIALIAS_MODE GRAYSCALE. (Quando você especifica um modo alfa de D2D1_ALPHA_MODE_UNKNOWN, Direct2D define o alfa para você dependendo do tipo de destino de renderização. Para obter uma lista do que a configuração de D2D1_ALPHA_MODE_UNKNOWN resolve para cada destino de renderização, consulte a visão geral de Formatos de Pixel e Modos Alfa com suporte.)

Você pode usar o método SetTextAntialiasMode para alterar o modo antialias de texto de volta para D2D1_TEXT_ANTIALIAS_MODE CLEARTYPE, mas renderizar o texto ClearType em uma superfície transparente pode criar resultados imprevisíveis. Se você quiser renderizar o texto ClearType para um destino de renderização transparente, recomendamos que você use uma das duas técnicas a seguir.

  • Use o método PushAxisAlignedClip para cortar o destino de renderização para a área em que o texto será renderizado e, em seguida, chame o método Clear e especifique uma cor opaca e renderize o texto.
  • Use DrawRectangle para desenhar um retângulo opaco atrás da área em que o texto será renderizado.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 7, Windows Vista com SP2 e Atualização de Plataforma para Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 R2, Windows Server 2008 com SP2 e Atualização de Plataforma para Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Cabeçalho dcommon.h (inclua D2d1.h)

Confira também

Formatos de pixel e modos alfa com suporte