LinearGradiantBrush分别应用于下划线和文本但不在一起

时间:2014-02-10 11:35:58

标签: c# wpf silverlight xaml windows-phone-8

昨天我试图回答一个问题here,那个家伙试图用文字颜色和下划线用另一种颜色为文本着色,这显然是不可能的。

我试图发挥聪明才智,想要应用LinearGradiantBrush所以我可以强制下划线用颜色和文本与另一个做这个:

<TextBlock Margin="68,232,124,300" FontSize="35">
       <Underline>
           <Underline.Foreground>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                     <GradientStop Color="Red" Offset="0.764"/>
                     <GradientStop Color="White" Offset="0.773"/>
                </LinearGradientBrush>
           </Underline.Foreground>
           Here s my text
       </Underline>
</TextBlock>

LinearGradiantBrush not applied on all the object as one

正如你所看到的那样,GradiantBrush是单独应用的,很奇怪,但为什么呢?

我预计它会从额外的底部到额外的顶部从白色到红色渐变(包括所有作为一个对象的线条),而不是像这里显示的那样。

这是正常的吗?这应该是那样的吗?

更新:

此行为也存在于WPF中。

2 个答案:

答案 0 :(得分:2)

Windows Phone中的TextDecorations几乎没有限制 - Windows Phone继承了Silverlight功能,因此only Underline is available.

除此之外,似乎TextBlock.ForegroundUnderline.Foreground彼此绑定(或者是相同的属性?)。 TextDecoration是一个额外的元素,因此Brush是单独应用的(如果我错了,请纠正我)。

由于这些限制,我们无法like this

答案 1 :(得分:1)

可以在WPF中更改下划线的颜色。

WPF XAML

<TextBlock FontSize="35" Foreground='Red'
           Text='Here is my text'>
  <TextBlock.TextDecorations>
    <TextDecoration>
      <TextDecoration.Pen>
        <Pen Brush='Orange' />
      </TextDecoration.Pen>
    </TextDecoration>
  </TextBlock.TextDecorations>

</TextBlock>

enter image description here

在Windows Phone和Silverlight实现中似乎不可能。

一种可能性是使用带有内置下划线的字体。

Example of Underline typeface

在这种情况下,渐变可能有效,因为下划线是单词的一部分。