В WPF OuterGlowBitmapEffect больше не поддерживается и не обрабатывается Net4.0. DropShadow имеет немного общего и неприемлемого в моем случае. Моя первоначальная цель — сделать белый размытый фон для черного текста ClearType в окне AeroGlass, чтобы сделать его более читаемым в темных сценах. Я начал играть с fx и HLSL. Это довольно интересно и мощно, но я все еще не могу приблизиться к OuterGlowBitmapEffect.
Моя текущая фиктивная версия, отражающая идею:
sampler2D Sampler : register(S0);
#define PI 3.14f
float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 px = tex2D(Sampler, uv);
/*
if (px.a > 0.9)
{
return px;
}
*/
const float d = 3;
int cnt = 0;
float a = 0;
for (float x = -0.1*d; x < 0.1*d; x += 0.05*d)
{
a += tex2D(Sampler, uv + float2(x, 0)).a;
a += tex2D(Sampler, uv + float2(0, x)).a;
a += tex2D(Sampler, uv + x).a;
cnt += 3;
}
a /= cnt;
float4 s = a;
float4 r = float4(px.rgb*px.a + s.rgb*(1-px.a), max(px.a, a));
return r;
}
Кстати, :могу ли я получить исходный код HLSL для DropShadowEffect, чтобы использовать его в качестве эталона? Может ли кто-нибудь указать мне алгоритм OuterGlowEffect на любом языке?
ПРИМЕЧАНИЕ. :Строка заголовка Windows 7 Aero Glass имеет такой эффект, чтобы сделать заголовок более читабельным!Это именно то, что я хотел бы иметь для моего текста в других частях окна (DwmExtendFrameIntoClientArea)