根据背景窗口和桌面反转颜色

时间:2011-07-21 10:50:16

标签: c# wpf transparent

我有一个带黑色标签的透明wpf窗口(WindowStyle="None")。我需要根据窗口下方的内容背景(其他窗口,桌面)动态地更改其标签的颜色,因此它始终可见且对比鲜明。

如何实施?我是否需要制作屏幕截图并从那里读取颜色值,或者有一些方法可以使用WPF工具进行操作?

如果标签有渐变会更难吗?

1 个答案:

答案 0 :(得分:1)

我不认为可以选择让标签的文字在字母周围形成对比轮廓?

您可以使用投影效果进行排序,使用对比色制作(例如),黑色文字有白色边框。

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Grid Background="Black">  
    <TextBlock Text="This is some text" FontSize="24" Margin="30" Foreground="Black" FontWeight="Bold">
      <TextBlock.Effect>
        <DropShadowEffect ShadowDepth="0" Opacity="1" BlurRadius="4" Color="White"/>
      </TextBlock.Effect>
    </TextBlock>
  </Grid>
</Page>

投影阴影定义不明确,但这样的事情非常明显。代码不漂亮,但它的工作原理。也许其他人更好地了解如何使用内置效果或其他方式使其工作。

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Grid Background="Black">  
    <TextBlock Text="This is some text" FontWeight="Bold" FontSize="24" Margin="28,30" Foreground="White" />
    <TextBlock Text="This is some text" FontWeight="Bold" FontSize="24" Margin="32,30" Foreground="White" />
    <TextBlock Text="This is some text" FontWeight="Bold" FontSize="24" Margin="30,28" Foreground="White" />
    <TextBlock Text="This is some text" FontWeight="Bold" FontSize="24" Margin="30,32" Foreground="White" />
    <TextBlock Text="This is some text" FontWeight="Bold" FontSize="24" Margin="28,28" Foreground="White" />
    <TextBlock Text="This is some text" FontWeight="Bold" FontSize="24" Margin="32,32" Foreground="White" />
    <TextBlock Text="This is some text" FontWeight="Bold" FontSize="24" Margin="32,28" Foreground="White" />
    <TextBlock Text="This is some text" FontWeight="Bold" FontSize="24" Margin="28,32" Foreground="White" />
    <TextBlock Text="This is some text" FontWeight="Bold" FontSize="24" Margin="30" Foreground="Black"></TextBlock>
  </Grid>
</Page>

修改

MSDN has info使用WPF创建轮廓文本,将文本转换为几何图形,或简单地创建格式化文本。