在WPF中高效地显示图像上的文本?
如何在图像上显示文本,使其始终可见(因为图像颜色混合且不可预测) 我考虑了两种选择:在WPF中高效地显示图像上的文本?,wpf,image,text,Wpf,Image,Text,如何在图像上显示文本,使其始终可见(因为图像颜色混合且不可预测) 我考虑了两种选择: 使文本边框为白色,而文本本身为黑色 与图片相反的文本显示 首选第一种方案,因为它看起来更坚固 嵌入文本很简单: <Grid> <Image Source="{Binding ImageLink}" Width="110" /> <TextBlock Text="{Binding Description}" HorizontalAlignment="Center"
<Grid>
<Image Source="{Binding ImageLink}" Width="110" />
<TextBlock Text="{Binding Description}"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Grid>
最新情况:
听起来是个不错的主意,只是行不通
我尝试了你的代码,结果如下:
左图是当我将
Color
属性设置为White
和ShadowDepth
设置为10
时,使文本更加突出或对比的最佳方法是使用任何效果,尤其是着色器效果。
自.NET3.5SP1以来,Microsoft也已淘汰位图效果,因此最好使用任何着色器效果或创建自己的效果
例如(),您可以使用DropShadowEffect“勾勒”文本,但将阴影深度设置为0:
<Grid>
<Image Source="{Binding ImageLink}" Width="110" />
<TextBlock Text="{Binding Description}"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<TextBlock.Effect>
<DropShadowEffect ShadowDepth="0" Color="Blue" BlurRadius="10" />
</TextBlock.Effect>
</TextBlock>
</Grid>
有关更多示例,您可以使用谷歌WPF特效
更新:您还可以使用文本选项的附加属性关闭文本的抗锯齿功能。TextRenderingMode并将其设置为“锯齿”,或者您也可以使用文本选项。TextFormattingMode并设置为“显示”
试着比较一下,看看是否适合您的需要:
<StackPanel>
<TextBlock>
Hello World ... Ideal text formatting
</TextBlock>
<TextBlock TextOptions.TextFormattingMode="Display">
Hello World ... Display text formatting
</TextBlock>
</StackPanel>
你好,世界。。。理想的文本格式
你好,世界。。。显示文本格式
希望这有帮助。我做了这件事,它有助于:
<Style x:Key="AnnotationStyle" TargetType="TextBlock">
<Setter Property="Background" Value="#70FFFFFF" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="TextWrapping" Value="Wrap"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#CCFFFFFF" />
</Trigger>
</Style.Triggers>
</Style>
....
<TextBlock ... Style="{StaticResource AnnotationStyle}"/>
....
下面是它的样子:更新后的评论,不,在黑色背景下仍然无法识别(我尝试将阴影颜色设置为白色,但没有帮助)。我决定采取不同的方法,这可能会降低性能成本。