C# 在文本上创建与窗口标题相同的效果

C# 在文本上创建与窗口标题相同的效果,c#,wpf,transparency,effect,C#,Wpf,Transparency,Effect,我用不同的文本块创建了一个透明窗口,但我的文本并不总是可读的,因为它取决于用户窗口的颜色 所以我想在文本上应用相同的效果,就像我的标题窗口的效果一样, 它就像一个白色的影子 谢谢最好的方法是使用着色器效果。我试着用内置的模糊效果来实现这一点,但它们似乎没有与Alpha融合 下面是一个例子,我将如何开始,并不代表一个最终产品。基于浮雕效果的HLSL边框效果。 查看完整图像以便更好地理解。这种效果只增加了2像素的边界,所以缩放使它看起来更糟 我很不擅长写HLSL,右边的代码只是修改后的复制粘贴 我

我用不同的文本块创建了一个透明窗口,但我的文本并不总是可读的,因为它取决于用户窗口的颜色

所以我想在文本上应用相同的效果,就像我的标题窗口的效果一样, 它就像一个白色的影子


谢谢

最好的方法是使用着色器效果。我试着用内置的模糊效果来实现这一点,但它们似乎没有与Alpha融合

下面是一个例子,我将如何开始,并不代表一个最终产品。基于浮雕效果的HLSL边框效果。

查看完整图像以便更好地理解。这种效果只增加了2像素的边界,所以缩放使它看起来更糟

我很不擅长写HLSL,右边的代码只是修改后的复制粘贴

我相信知道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 &amp; Apply" Grid.Column="1" Grid.Row="2" Padding="4,1" Margin="4" HorizontalAlignment="Center" Click="Button_Click" />
    </Grid>
</Window>


问题是什么?我在一个项目中工作,使用辉光效果可以获得与标题窗口aero相同的效果,但这种效果不适用于所有颜色的aero窗口。我如何才能在所有颜色上获得这种效果,以便于我的文本的可读性?您不能确定Windows主题的底色,并设置一个
颜色
字典,当这些主题就位时必须进行更改吗?