我创建了一个包含不同文本块的透明度窗口,但我的文本并不总是可读的,因为它取决于用户窗口的颜色。
所以我想在文字上应用相同的效果,比如标题窗口的效果, 这就像一个白色的阴影。
谢谢
答案 0 :(得分:0)
执行此操作的最佳方法是使用着色器效果。我尝试使用内置的模糊效果来做到这一点,但似乎它们并没有与Alpha混合。
以下是我将如何开始并且不代表最终产品的示例。基于浮雕效果的HLSL边框效果。
查看完整图片以便更好地理解。此效果仅增加2 px边框,因此缩放使其看起来更糟。
我写HLSL非常糟糕,右边的代码只是通过修改从http://brooknovak.wordpress.com/2008/09/16/simple-image-filters-written-as-hlsl-pixel-shaders/复制粘贴。
我确信知道HLSL / GLSL的人可以编写一个正常工作的模糊效果。请注意,此效果适用于整个图像,因此需要知道图像大小。您应该将它们放在一个恒定的缓冲区中,并使用它们而不是硬编码的500.0作为宽度和高度。它们必须是渲染对象的宽度/高度。在我的例子中,它实际上是窗口的整个左半边而不仅仅是文本的大小,因为我的XAML看起来像这样......
<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
Loaded="Window_Loaded" Background="Transparent">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="264*" />
<ColumnDefinition Width="239*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="218*" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Text="The quick brown fox jumped over the lazy dog." Foreground="White" Background="Transparent" Grid.RowSpan="3" x:Name="PART_TextBlock"/>
<TextBox x:Name="PART_TextBox" Grid.Column="1" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Visible" AcceptsReturn="True" AcceptsTab="True" />
<TextBlock x:Name="PART_Error" Grid.Column="1" Grid.Row="1"/>
<Button Content="Compile & Apply" Grid.Column="1" Grid.Row="2" Padding="4,1" Margin="4" HorizontalAlignment="Center" Click="Button_Click" />
</Grid>
</Window>