在WPF中,Net4.0不再支持或呈现OuterGlowBitmapEffect.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; …Run Code Online (Sandbox Code Playgroud) 这是我从YAHT练习的解决方案:
练习4.6编写一个数据类型元组,它可以包含一个,两个,三个或四个元素,具体取决于构造函数(也就是说,应该有四个构造函数,每个参数个数一个).还提供了tuple1到tuple4的函数,它们取一个元组并返回该位置中的值,如果该数字有效则返回Nothing(即,你只要求元组中的tuple4只保存两个元素).
当我写第一行时,我对C#的简单性感到兴奋
data Tuplex a b c d = Tuple1 a | Tuple2 a b | Tuple3 a b c | Tuple4 a b c d
-- class Tuplex<a,b,c,d> {
-- Tuplex(a p1){ _p1 = p1; }
-- Tuplex(a p1, b p2){ _p1 = p1; _p2 = p2; }
-- Tuplex(a p1, b p2, c p3){ _p1 = p1; _p2 = p2; _p3 = p3; }
-- Tuplex(a p1, b p2, c p3, d p4){ _p1 = p1; _p2 …