WPF控件将任何溢出的文本淡化为透明,而不是剪切或包装?

时间:2012-04-10 15:12:31

标签: wpf wpf-controls

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

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

3 个答案:

答案 0 :(得分: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 :(得分: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"

答案 2 :(得分:0)

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