【问题标题】:create the same effect on a text as the title of windows在文本上创建与窗口标题相同的效果
【发布时间】:2012-04-09 17:52:06
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 还有什么问题?
  • 我在一个使用发光效果的项目中工作,以获得与带有发光效果的标题窗口 aero 相同的效果,但这种效果不会出现在所有颜色的 aero 窗口中。我该如何做才能在所有颜色上获得这种效果以使我的文本可读?
  • 您不能确定 Windows 主题的基础颜色并设置 DictionaryColors,当这些主题到位时必须更改?

标签: c# wpf transparency effect


【解决方案1】:

最好的方法是使用着色器效果。我尝试使用内置的模糊效果来做到这一点,但似乎它们没有与 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 &amp; Apply" Grid.Column="1" Grid.Row="2" Padding="4,1" Margin="4" HorizontalAlignment="Center" Click="Button_Click" />
    </Grid>
</Window>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 2019-06-21
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多