2011-10-25 55 views
4

如何在圖像上顯示文本,所以它應該始終可見(因爲圖像顏色是混合和不可預知的)?在WPF中的圖像上有效顯示文本?

我想到了兩個選項:

  1. 讓文本邊框爲白色,而文字本身是黑色
  2. 具有文本顯示負畫面

的第一種選擇將是首選,因爲它看起來更堅實。

嵌入文本很簡單:

<Grid> 
    <Image Source="{Binding ImageLink}" Width="110" /> 
    <TextBlock Text="{Binding Description}" 
    HorizontalAlignment="Center" 
    VerticalAlignment="Center" /> 
</Grid> 

更新上answer

聽起來像一個偉大的想法,但它不工作。

我想你的代碼,而這裏的結果:

enter image description here

左圖是當我的Color屬性設置爲WhiteShadowDepth10

回答

5

我這樣做,它可以幫助:

<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}"/> 

這裏是什麼樣子:
enter image description here

3

使文本更加突出或對比的最佳方式是使用任何效果,特別是着色器效果。 微軟也從.NET 3.5 SP1開始使位圖效應過時,因此最好的辦法是使用任何着色器效果或創建自己的效果。

例如(from Karl Shifflett),你可以使用DropShadowEffect到 「綱要」 文本,但ShadowDepth設置爲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> 

更多樣,你可以在google WPF效果。

UPDATE:您也可以關閉反鋸齒文本使用TextOptions.TextRenderingMode的附加屬性,並將其設置爲「別名」,或者你也可以使用TextOptions.TextFormattingMode,並設置爲「顯示」 。

嘗試和比較,看看是否會滿足您的需求:

<StackPanel> 
    <TextBlock> 
     Hello World ... Ideal text formatting 
    </TextBlock> 
    <TextBlock TextOptions.TextFormattingMode="Display"> 
     Hello World ... Display text formatting 
    </TextBlock> 
</StackPanel> 

希望這有助於。

+0

沒有做這項工作。看到我更新的問題。 – Shimmy

+0

更新後的註釋,不可識別的黑色背景(我嘗試將陰影顏色設置爲白色,但沒有幫助)。我決定採取一種不同的方法,這可能會降低性能,[見我的回答](http:// stackoverflow。COM /問題/ 7888231 /有效地顯示文本-圖像上合WPF/7942004#7942004)。 – Shimmy