Edito mi post puesto que he visto tarde la imagen que adjuntas, vamos por partes;
Tienes un formulario con las siguientes propiedades;
Código Delphi
[-] Color = clFuchsia
TransparentColor = True
TransparentColorValue = clFuchsia
Con ello tienes un formulario con regiones nulas (transparentes), internamente la API
SetLayeredWindowAttributes le dice el SO que debe reconoce al color clFuchsia ($FF00FF) como máscara para dicho efecto, cada region (~pixel) que sea IGUAL a dicho valor
exacto será automáticamente "anulado".
Ahora tienes una imagen PNG que contiene un "
Alpha channel" (especificación 2.4), que indica un valor de transparencia por "pixel", dicho valor puede ser de 0 a N donde 0 significa que el pixel será completamente transparente ("hueco") y mediante vaya siendo un valor mayor hacia N será un color mas "fuerte". Esto funciona de la misma forma que la propiedad AlphaBlendValue en un formulario normal.
La imagen que estas utilizando, no solo tiene valores Alpha = 0 (que indica total transparencia), sino que también tiene alrededor de la imagen valores de transparencia parciales (
ejemplo).
Para ser más directos; cada pixel (en cualquier proceso de opacidad) es
promediado con el color de fondo, ósea que para cada R, G y B:
Código:
x = ((x1 / MAX(x)) * ((Alpha / MAX(Alpha)) * MAX(x)) + x2) / 2
Donde:
x = Resultado
x1 = R, G o B del pixel de la imagen
x2 = R, G o B del pixel de fondo
Alpha = valor "Alpha channel"
MAX(x) = valor maximo de x
MAX(Alpha) = valor máximo de Alpha
El resultado de la anterior fórmula en las secciones del gráfico que tu llamas "mal uso del canal Alpha" son pixeles con valores
distintos de clFuchsia -sino como ya explique- valores promediados con un grado de opacidad, y como también ya había explicado un color distinto de $FF00FF (talvez un $FF00FE)
no es considerado por el SO para el proceso de Transparencia.
Lo que tu quieres es algo que todavía no he visto en ningúna aplicación y es un formulario normal SOLO en la parte de la imagen que no usa
Alpha channel, opaco SOLO en las partes de la imagen que usan
Alpha channel y transparente en el resto. Lo puedes realizar incrustando un formulario dentro de otro y dividiendo por secciones la imagen, eliminando cualquier
Alpha channel que sea parcial, o usando un color de transparencia
para la imagen gris.
No quise haberte aburrido con la explicacion, pero notarás que era necesaria.
Saludos