Discussão do artigo "Estudando a Classe CCanvas. Como Desenhar Objetos Transparentes" - página 7

 
Nikolai Semko:

É aqui que o algoritmo de mistura de outras cores transparentes é aplicado:


Onde está a transparência? As sombras?

 
Dmitry Fedoseev:

E onde está a transparência? As sombras?

A sombra e a borda do círculo suavizado.
Afinal, o pixel na borda da suavização tem a mesma cor, mas uma transparência diferente.
 

Nicholas, não estou com vontade de ter flores agora. Se houver um erro na fórmula, agradeço por tê-lo apontado. Não a verifiquei muito, implementei-a e me esqueci dela.

Seria bom aplicar seus conhecimentos e conquistas no campo do Kanvas em algo útil. Pense nisso.

 
Реter Konow:

Nicholas, não estou com vontade de ter flores agora. Se houver um erro na fórmula, agradeço por tê-lo apontado. Não a verifiquei muito - implementei-a e me esqueci dela.

Seria bom aplicar seus conhecimentos e conquistas no campo do Kanvas em algo útil. Pense nisso.

Obrigado por me estimular, pois esse pensamento nem passou pela minha cabeça :)))
Bem, falando sério, estou muito surpreso com suas palavras. Exemplos inúteis são apenas uma demonstração de possibilidades. Um olho experiente sempre verá muita utilidade em coisas aparentemente inúteis. E você não sabe que o que estou sempre falando é muito aplicável em coisas muito úteis. E tudo isso eu faço exclusivamente para a realização de coisas úteis. Só não falo sobre isso até que eu tenha terminado.

 
Nikolai Semko:

Obrigado pela dica, pois essa ideia nunca me ocorreu :)))
Bem, falando sério, estou muito surpreso com o que você disse. Exemplos inúteis são apenas uma demonstração de possibilidades. Um olho experiente sempre verá muita utilidade em coisas aparentemente inúteis. E você deve saber que o que estou sempre falando é muito aplicável em coisas muito úteis. E tudo isso eu faço exclusivamente para a realização de coisas úteis. Só não falo sobre isso depois de ter terminado.

Eu não disse que seus exemplos eram inúteis. Pelo contrário. A questão é: quando você vai aplicá-los à coisa útil? Ou seja, você está criando um invólucro dessa utilidade que ainda não mostrou em lugar algum. E o que é e para que finalidade - ninguém sabe. :))

 
Реter Konow:

Eu não disse que seus exemplos eram inúteis. Pelo contrário. A questão é: quando você os aplicará à coisa útil? Ou seja, você está criando um invólucro de algo útil que ainda não foi mostrado em lugar algum. E o que é e para que finalidade - ninguém sabe. :))

É melhor ter surpresas do que correr na frente do trem.
 
Nikolai Semko:

não que ...

é sobre Alpha1 e Alpha2.

Também é necessário calcular não apenas as cores de mistura da nova formação, mas também a transparência da nova formação.

...

É apenas um pouco de matemática no nível da 7ª série do ensino médio. Você obtém um polinômio longo e precisa reduzi-lo. O resultado deve ser um trinômio. O resultado deve ser um trinômio.

 
Nikolai Semko:
É melhor ter surpresas do que correr na frente do trem.

Nikolai, todos já sabem que você é o número um no Canvas. Não estou discutindo. Você pode me dizer, se souber, como recuperar a cor e o alfa da cor final recebida de ColorToARGB()? Enviei a cor e o alfa, obtive o resultado e, em seguida, preciso obter a cor e o alfa originais do resultado.

Como fazer isso?

 
Реter Konow:

Nikolai, todos já sabem que você é o primeiro no Canvas. Não estou discutindo. Você pode me dizer, se souber, como recuperar a cor e o alfa da cor final recebida de ColorToARGB()? Você enviou a cor e o alfa, obteve o resultado e, em seguida, precisa obter a cor e o alfa originais do resultado.

Como fazer isso?

É um mistério para mim por que R e B são trocados em ARGB a partir de RGB. Mas é um fato.

É muito simples:

   color x=0x00112233;
   color y=ColorToARGB(x,0x44); 
   color z=ColorToARGB(y,0);
   uchar a=y>>24;

ao depurar, temos:

z é o RGB original

a- o alfa original.

Também é possível fazer isso por meio de union ou byte shifts, mas o registro será mais longo.

Quando os componentes de cor são conhecidos, eu não uso o registro do tipo ColorToARGB(clrRed,48), mas uso a forma hexadecimal do registro 0x30FF0000 (o mesmo que ColorToARGB(clrRed,48)). Muito conveniente, claro e rápido.

 
Dmitry Fedoseev:

É apenas um pouco de matemática da 7ª série. Você obtém um polinômio longo e precisa reduzi-lo. O resultado deve ser um trinômio. O resultado deve ser um trinômio.

Se você pesquisar "polinômio" ou "trinômio" no Google Imagens, verá muitas imagens engraçadas :)))