如何制作强大的光环
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; };
我尝试更改所有参数,但几乎没有任何改变。
谢谢
我还没有找到比以下更好的解决方案:
- 删除 UI 元素
- 添加多个 UI 相同类型、相同属性、相同光环的元素
- 重新添加 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);
如果静态使用这可能有效。如果效果必须是动态的,这肯定会导致性能问题。
我可以像文本框一样在 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; };
我尝试更改所有参数,但几乎没有任何改变。 谢谢
我还没有找到比以下更好的解决方案:
- 删除 UI 元素
- 添加多个 UI 相同类型、相同属性、相同光环的元素
- 重新添加 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);
如果静态使用这可能有效。如果效果必须是动态的,这肯定会导致性能问题。