2012-04-10 2 views
0

オーバーフローするテキストがクリッピングやラッピングではなく透明にフェードアウトするように、WPFコントロール(TextBlockに似ています)を作成するにはどうすればよいですか?オーバーフローするテキストをクリッピングまたはラッピングするのではなく透明にフェードアウトするWPFコントロール?

コントロールを固定幅に保つ必要があるため、コントロールの幅をテキストに合わせて拡大することはオプションではありません。私はまた、テキストフォントを小さくしたくありません。

答えて

0

ありがとうございましたが、私が必要としている答えはMSDNです。

+0

明らかにするには、TextBlockの上にグラデーションブラシを付けた長方形を配置するだけです。私の場合、矩形はテキストの右端にあります。 – Surfbutler

+0

両方のソリューションの問題点は、親コントロールの右端に常にフェードアウトする必要があったことです。このようにして、テキストブロック内の短い文字列では右端がフェードアウトしません。私は基本的に「演劇できるよりも多くのテキストがある」ことを示しています。とにかく助けてくれてありがとう。 – Surfbutler

1

あなたが達成しようとしているが、あなたはこのような何かを行うことができ、まさに非常にわからない:

<TextBlock Text="Some long text here that should fade out"> 
     <TextBlock.Foreground> 
      <LinearGradientBrush> 
       <GradientStop Offset="0" Color="Black"/> 
       <GradientStop Offset="0.7" Color="Black"/> 
       <GradientStop Offset="1" Color="Transparent"/> 
      </LinearGradientBrush> 
     </TextBlock.Foreground> 
    </TextBlock> 

しかし、あなたのコントロールはまだそれが表示するためにすべてのテキストを収容するのに十分広くする必要があります。

1
<TextBlock Text="fgdfgfdgfddgfdgdfgfdgfdgd" Width="129" TextWrapping="NoWrap"> 
     <TextBlock.Foreground> 
      <LinearGradientBrush EndPoint="0.661,0.399" StartPoint="0.008,0.496"> 
       <GradientStop Color="Black" Offset="0"/>      
       <GradientStop Color="#7F000000" Offset="0.803"/> 
       <GradientStop Color="#4C0A0909" Offset="0.95"/> 
       <GradientStop Color="#BF000000" Offset="0.729"/> 
       <GradientStop Color="#F8000000" Offset="0.699"/> 
      </LinearGradientBrush> 
     </TextBlock.Foreground> 
    </TextBlock>    

勾配上のトリックは、すべての色が全て黒オフに基づいているにもかかわらず、フェード擬似コードでは、RGBAの一部で再生することにより、各勾配の不透明度を介して達成されることである。

GradientStop Color="Black" A=100%    
GradientStop Color="Black" A=97% Offset="0.803" 
GradientStop Color="Black" A=75% Offset="0.95" 
GradientStop Color="Black" A=80% Offset="0.729" 
GradientStop Color="Black" A=30% Offset="0.699" 
+0

私はマットが私にそれを打つと思う、彼は同じことを少し違ってやっている。いずれにしてもうまくいく! –