如何制作强大的光环

How to make a strong halo

我可以像文本框一样在 UI 元素周围加上光环。 问题是它几乎是看不见的。

我用

Effect glowEffect = new DropShadowEffect
{
    BlurRadius = 20,
    Color = Colors.Gold,
    ShadowDepth = 10,
    Opacity = 1,
    RenderingBias = RenderingBias.Quality
};

并应用

tbxSearch.GotFocus += (sendGF, argGF) => { (sendGF as TextBox).Effect = glowEffect; };
tbxSearch.LostFocus += (sendLF, argLF) => { (sendLF as TextBox).Effect = null; };

我尝试更改所有参数,但几乎没有任何改变。 谢谢

我还没有找到比以下更好的解决方案:

  1. 删除 UI 元素
  2. 添加多个 UI 相同类型、相同属性、相同光环的元素
  3. 重新添加 UI 元素。

这也可以在例程中完成。

public void Add(TextBox tbx, int num)
{
    var glowEffectRed = new DropShadowEffect
    {
        BlurRadius = 50,
        Color = new Color { A = 255, R = 255, G = 0, B = 0 },
        ShadowDepth = 0,
        Opacity = 1,
        RenderingBias = RenderingBias.Performance
    };
    tbx.Effect = glowEffectRed;
    var grd = (Grid)tbx.Parent;
    grd.Children.Remove(tbx);
    for (int iii = 0; iii < num; iii++)
    {
        var tbxAdd = new TextBox();
        tbxAdd.Effect = glowEffectRed;
        Grid.SetRow(tbxAdd, Grid.GetRow(tbx));
        tbxAdd.Height = tbx.ActualHeight;
        tbxAdd.Width = tbx.ActualWidth;
        grd.Children.Add(tbxAdd);   
    }
    grd.Children.Add(tbx);
}

然后调用必须重新应用效果的次数

Add(tbx1, 1);
Add(tbx2, 5);
Add(tbx3, 10);
Add(tbx4, 15);

如果静态使用这可能有效。如果效果必须是动态的,这肯定会导致性能问题。