Discusión sobre el artículo "Estudiamos la clase CCanvas. Implementación de la transparencia de los objetos gráficos" - página 7

 
Nikolai Semko:

aquí es donde se aplica el algoritmo de mezcla de otros colores transparentes:


¿Dónde está la transparencia? ¿Las sombras?

 
Dmitry Fedoseev:

¿Y dónde está la transparencia? ¿La sombra?

La sombra y el borde del círculo alisado.
Al fin y al cabo, el píxel del borde del alisado tiene el mismo color pero una transparencia diferente.
 

Nicholas, no estoy de humor para flores en este momento. Si hay un error en la fórmula, gracias por señalarlo. No la revisé mucho - la implementé y me olvidé de ella.

Estaría bien aplicar tus conocimientos y logros en el campo de los kanvas en algo útil. Piensa en ello.

 
Реter Konow:

Nicholas, no estoy de humor para flores en este momento. Si hay un error en la fórmula, gracias por señalarlo. No la revisé mucho - la implementé y me olvidé de ella.

Estaría bien aplicar tus conocimientos y logros en el campo de los kanvas en algo útil. Piensa en ello.

Gracias por incitarme, porque este pensamiento ni siquiera se me pasó por la cabeza :)))
Bueno, en serio, me sorprenden mucho tus palabras. Los ejemplos inútiles son sólo una demostración de posibilidades. Un ojo experimentado siempre verá mucha utilidad en cosas aparentemente inútiles. Y no sabes que de lo que hablo siempre es muy aplicable en cosas muy útiles. Y todo esto lo hago exclusivamente para la realización de cosas útiles. Sólo que no hablo de ello hasta que he terminado.

 
Nikolai Semko:

Gracias por el consejo, porque ni siquiera se me había ocurrido esta idea :)))
Bueno, en serio, me sorprende mucho lo que dices. Los ejemplos inútiles son sólo una demostración de posibilidades. Un ojo experimentado siempre verá mucha utilidad en cosas aparentemente inútiles. Y que sepas que lo que comento siempre es muy aplicable en cosas muy útiles. Y todo esto lo hago exclusivamente para la realización de cosas útiles. Sólo que no hablo de ello hasta después de haberlo hecho.

Yo no he dicho que tus ejemplos sean inútiles. Al contrario. La cuestión es cuándo vas a aplicarlos a lo útil. Es decir, estás creando un envoltorio de esa utilidad que no has mostrado en ningún otro sitio. Y qué es y para qué sirve, nadie lo sabe. :))

 
Реter Konow:

No he dicho que tus ejemplos sean inútiles. Al contrario. La cuestión es cuándo los aplicarás a lo útil. Es decir, estás creando una envoltura de algo útil que aún no se ha mostrado en ninguna parte. Y qué es y para qué sirve - nadie lo sabe. :))

Mejor sorpresas que correr delante del tren.
 
Nikolai Semko:

no es que ...

se trata de Alpha1 y Alpha2.

También es necesario calcular no sólo los colores de mezcla de nueva formación, sino también la transparencia de nueva formación.

...

Es un poco de matemáticas del nivel del 7º curso de secundaria. Se obtiene un polinomio largo y hay que reducirlo. El resultado debe ser un trinomio.

 
Nikolai Semko:
Mejores sorpresas que correr delante del tren.

Nikolai, todo el mundo ya sabe que eres el número uno en Canvas. No te lo discuto. ¿Puedes decirme, si lo sabes, cómo recuperar el color y el alfa del color final recibido de ColorToARGB()? Envié el color y el alfa, obtuve el resultado, y luego necesito obtener el color original y el alfa del resultado.

¿Cómo se hace?

 
Реter Konow:

Nikolai, todo el mundo ya sabe que eres el primero en Canvas. No te lo discuto. ¿Puedes decirme, si lo sabes, cómo recuperar el color y el alfa del color final recibido de ColorToARGB()? Enviaste el color y el alfa, obtuviste el resultado, y luego necesitas obtener el color original y el alfa del resultado.

¿Cómo hacerlo?

Es un misterio para mí por qué R y B se intercambian en ARGB desde RGB. Pero es un hecho.

Muy sencillo:

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

cuando depuramos, tenemos:

z es el RGB original

a- el alfa original.

También se puede hacer mediante unión o desplazamiento de bytes, pero el registro será más largo.

Cuando se conocen los componentes de color, no uso el registro de tipo ColorToARGB(clrRed,48) en absoluto, sino que uso la forma hexadecimal del registro 0x30FF0000 (igual que ColorToARGB(clrRed,48)). Muy cómodo, claro y rápido.

 
Dmitry Fedoseev:

Es sólo un poco de matemáticas de 7º grado. Obtienes un polinomio largo, tienes que reducirlo. El resultado debería ser un trinomio.

Si buscas en Google "polinomio" o "trinomio" en Imágenes, obtendrás un montón de imágenes divertidas :)))