WPF コントロール (TextBlock に似たもの) を作成して、オーバーフローしたテキストを単純にクリッピングまたはラッピングするのではなく透明にフェードアウトするにはどうすればよいですか?
コントロールを固定幅のままにしておく必要があるため、テキストに合わせてコントロールの幅を広げることはできません。また、テキストのフォントを小さくしたくありません。
WPF コントロール (TextBlock に似たもの) を作成して、オーバーフローしたテキストを単純にクリッピングまたはラッピングするのではなく透明にフェードアウトするにはどうすればよいですか?
コントロールを固定幅のままにしておく必要があるため、テキストに合わせてコントロールの幅を広げることはできません。また、テキストのフォントを小さくしたくありません。
何を達成しようとしているのか正確にはわかりませんが、次のようなことができます。
<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>
ただし、コントロールは、表示するすべてのテキストを収容するのに十分な幅が必要です。
<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 の A 部分を操作することにより、各グラデーションの不透明度によってフェードが実現されることです。
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"
みんなありがとう、でもMSDNで必要な答えを見つけました。