0

如何创建一个 WPF 控件(类似于 TextBlock),以便任何溢出的文本都淡出为透明而不是简单地剪切或换行?

我需要保持我的控件固定宽度,因此扩展控件的宽度以适应文本不是一种选择。我也不想让文本字体变小。

4

3 回答 3

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>

但是您的控件仍然需要足够宽以容纳所有文本才能显示。

于 2012-04-10T15:44:11.957 回答
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"
于 2012-04-10T15:53:18.163 回答
0

谢谢大家,但我在MSDN上找到了我需要的答案。

于 2012-04-11T09:55:08.567 回答