эффект глубины текста границы wpf - PullRequest
0 голосов
/ 06 мая 2011

В приведенном ниже примере LinearGradientBrush дает немного скошенный вид границы. Граница растягивается по ширине, но высота аналогична средней панели инструментов.Текст текстового блока в рамке выглядит так, как будто он находится сверху панели, мне интересно, есть ли способ сделать так, чтобы текст отображался в строке, а не в верхней части панели.Спасибо за любое направление.

<Border HorizontalAlignment="Stretch" VerticalAlignment="Top" BorderThickness="1" CornerRadius="0" BorderBrush="SlateGray">
    <Border.Background>
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
            <GradientStop Color="DimGray" Offset="0" />
            <GradientStop Color="Black" Offset="0.5" />
            <GradientStop Color="Gray" Offset="1" />
        </LinearGradientBrush>
    </Border.Background>
    <TextBlock Text="Check for updates" Foreground="AliceBlue" FontWeight="Bold"/>
</Border>

Ответы [ 2 ]

1 голос
/ 06 мая 2011

Не совсем уверен, что вы ищете, но две вещи, которые делают его более встроенным, - это наложение модифицированной версии кисти фона и использование градиента для самого текста, но подсветка, как будто внутренняя часть границы изогнута .

<Border HorizontalAlignment="Stretch" VerticalAlignment="Top" BorderThickness="1" CornerRadius="0" BorderBrush="SlateGray">
    <Border.Background>
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
            <GradientStop Color="DimGray" Offset="0" />
            <GradientStop Color="Black" Offset="0.5" />
            <GradientStop Color="Gray" Offset="1" />
        </LinearGradientBrush>
    </Border.Background>
    <Grid>
        <TextBlock Text="Check for updates" FontWeight="Bold">
            <TextBlock.Foreground>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="DimGray" Offset="0" />
                    <GradientStop Color="AliceBlue" Offset="0.5" />
                    <GradientStop Color="White" Offset="1" />
                </LinearGradientBrush>
            </TextBlock.Foreground>
        </TextBlock>
        <Border>
            <Border.Background>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" Opacity="0.5">
                    <GradientStop Color="DimGray" Offset="0" />
                    <GradientStop Color="Transparent" Offset="0.5" />
                    <GradientStop Color="Gray" Offset="1" />
                </LinearGradientBrush>
            </Border.Background>
        </Border>
    </Grid>
</Border>

screenshot

1 голос
/ 06 мая 2011

вам нужно использовать такие именованные эффекты в WPF.Вот библиотека из них http://wpffx.codeplex.com/, Эффект Рельефный может помочь вам.

...