2011-10-25 10 views
4

画像にテキストを表示する方法です(画像の色が混じって予測できないため)テキスト自体はテキストが絵 WPFで画像にテキストを効率的に表示できますか?

第一選択肢は考えに否定的表示持つ

  • 黒になりながら、白のテキストの境界線を作る

    1. は、私は約2つの選択肢が考えより強固に見えるので好ましい。テキストを埋め込む

      は簡単です:answer

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

      更新:

      が、それは動作しません除いて素晴らしいアイデアのように聞こえます。

      私はあなたのコードを試みたが、ここでの結果である:

      enter image description here

      私は10WhiteShadowDepthColorプロパティを設定すると左の画像があるが。

  • 答えて

    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を使用することができますが、0にShadowDepthを設定します。

    <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の効果をグーグルことができます。

    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/questions/7888231/efficient-display-text-on-wpf/7942004#7942004)。 – Shimmy

    関連する問題