O que o PorterDuff.Mode significa nos gráficos do Android.

142

Gostaria de saber o que o PorterDuff.Mode significa nos gráficos do Android.

Eu sei que é um modo de transferência .

Eu também sei que ele tem atributos como DST_IN, Multiply etc.

Rogerstone
fonte
da minha recente descoberta. se você tiver imagens sobrepostas e tentar alterar o filtro de cores de uma delas, isso afetará a outra imagem sobreposta!
Jonathan

Respostas:

321

Aqui está um excelente artigo com ilustrações de um engenheiro do Google:

http://ssp.impulsetrain.com/porterduff.html

O PorterDuff é descrito como uma maneira de combinar imagens como se fossem "pedaços de papelão de forma irregular" sobrepostos, bem como um esquema para misturar as partes sobrepostas.

A maneira padrão do Android de compor imagens é PorterDuff.Mode.SRC_OVER , que equivale a desenhar a imagem / cor de origem sobre a imagem de destino. Em outras palavras, ele faz o que você esperaria e desenha a imagem de origem (a que você está desenhando) em cima da imagem de destino (a tela), com a imagem de destino aparecendo até o grau definido pelo alfa da imagem de origem.

Infográfico PorterDuff do artigo

Você pode usar a tecla abaixo para entender a álgebra usada pelos documentos do Android para descrever os outros modos (consulte o artigo para obter uma descrição mais completa com termos semelhantes).

  • Sa Source alpha
  • Cor de origem Sc
  • Da Destino alfa
  • Dc Destino cor

Onde alfa é um valor [0..1]e a cor é substituída uma vez por canal (use a fórmula uma vez para cada um dos itens vermelho, verde e azul)

Os valores resultantes são especificados como um par entre colchetes da seguinte maneira.

[<alpha-value>,<color-value>]

Onde alpha-valuee color-valuesão as fórmulas para gerar o alfa chanel resultante e cada chanel colorido, respectivamente.

Phasmal
fonte