我有一个 WPF 应用程序,可以在 Aero 玻璃背景上绘制文本。问题是根据显示的内容behind在我的应用程序中,玻璃背景上绘制的文本可能会变得难以阅读甚至完全无法阅读。
正如您在下面的屏幕截图中看到的,Save, Undo and Redo如果窗口中的文本块变得难以阅读behind我的应用程序是黑暗的。
现在,Microsoft 应用程序(例如 Word)通过在文本后面进行某种模糊处理来解决此问题,如下面的屏幕截图所示:
我听说我可以进行某种 Win32 API 调用来使其正常工作。不过,目前这对我来说只是传闻,我没有事实支持。
我尝试了一些不同的特定于 WPF 的操作来近似 Word 的功能:
- 在文本上添加阴影
- 带有模糊效果的透明文本图像(而不是
TextBlock
)
这些都没有给我提供可用的结果,它们看起来都很糟糕。有谁知道任何方法,WPF 或 Win32,我可以用它来绘制文本,就像微软在玻璃上所做的那样(i.e., readable)?
我能够在没有 Win32 的情况下解决这个问题(需要 .NET 3.5)。
<Grid>
<TextBlock Foreground="Black" HorizontalAlignment="Center" Margin="0,10,30,0" Text="Text that should be visible on Aero Glass">
<TextBlock.Effect>
<BlurEffect Radius="15" KernelType="Gaussian">
</BlurEffect>
</TextBlock.Effect>
</TextBlock>
<TextBlock HorizontalAlignment="Center" Foreground="White" Margin="0,10,30,0" Text="Text that should be visible on Aero Glass">
</TextBlock>
</Grid>
此代码具有将文本加倍并模糊 Z 索引方面较远的文本版本的效果。对我来说就像一个魅力。
需要注意一件事:
如果文本颜色为白色且模糊颜色为黑色,这似乎效果最好。反过来看起来就不太好了。好消息是,无论您的航空玻璃窗后面是什么,它看起来都很好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)