如何创建一个 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 的一部分通过每个渐变的不透明度来实现的,伪代码:
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上找到了我需要的答案。