我有一个带黑色标签的透明wpf窗口(WindowStyle="None"
)。我需要根据窗口下方的内容背景(其他窗口,桌面)动态地更改其标签的颜色,因此它始终可见且对比鲜明。
如何实施?我是否需要制作屏幕截图并从那里读取颜色值,或者有一些方法可以使用WPF工具进行操作?
如果标签有渐变会更难吗?
答案 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创建轮廓文本,将文本转换为几何图形,或简单地创建格式化文本。