WPF では、OuterGlowBitmapEffect はサポートされなくなり、Net4.0 でレンダリングされなくなりました。DropShadow には少し共通点があり、私の場合は受け入れられません。私の最初の目標は、AeroGlass ウィンドウで黒の ClearType テキストの背景を白くぼかして、暗いシーンでも読みやすくすることです。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;
}
ところで: DropShadowEffect の HLSL ソースを取得して参照として使用できますか? 誰かが OuterGlowEffect アルゴリズムを任意の言語で教えてくれますか?
注: Windows 7 の Aero Glass タイトル バーには、タイトルを読みやすくする効果があります。それはまさに、ウィンドウの他の部分のテキストに必要なものです (DwmExtendFrameIntoClientArea が適用されます)。