Эффект внешнего скоса на текст в WPF - PullRequest
7 голосов
/ 02 декабря 2010

Можно ли применить внешний эффект скоса к тексту метки в WPF?

alt text

как по мне, эффекта свечения должно быть достаточно:

alt text

Ответы [ 5 ]

5 голосов
/ 02 декабря 2010

Вот способ получить эффект свечения для текста. Используя элемент управления OutlinedText из этой ссылки , которая предлагает Stroke.

alt text

<local:OutlinedText FontSize="100"
                    Fill="Black"
                    Bold="True"
                    Stroke="White"
                    StrokeThickness="3"
                    Text="Glow">
    <local:OutlinedText.Effect>
        <DropShadowEffect ShadowDepth="0"
                          Color="White"
                          Opacity="1"
                          BlurRadius="12"/>
    </local:OutlinedText.Effect>
</local:OutlinedText>

Обновление
Это самый близкий к этому эффект Bevel, но он работает не очень хорошо. Использовал подход из по этой ссылке .

alt text

<Style x:Key="ContentControlStyle1" TargetType="{x:Type ContentControl}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ContentControl}">
                <Grid>
                    <TextBlock Name="Highlight" Foreground="#66FFFFFF" Text="{TemplateBinding Content}" />
                    <TextBlock Name="Shadow" Margin="0,4,0,0" Foreground="#CC000000" Text="{TemplateBinding Content}"/>
                    <ContentPresenter Margin="0,2,0,0"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

<ContentControl Style="{DynamicResource ContentControlStyle1}" FontSize="101" Foreground="DarkGray" Content="Bevel"/>
3 голосов
/ 02 декабря 2010

Я не особо доволен этим «решением»:

<TextBlock Text="Hello World!" Foreground="Red">
   <TextBlock.Effect>
      <BlurEffect Radius="1" KernelType="Box" />
   </TextBlock.Effect>
</TextBlock>
<TextBlock Text="Hello World!" />

Другой вариант - сделать свой собственный пиксельный шейдер, я не очень хорош в этом, поэтому боюсь, что не могупомочь вам: /

редактировать: лучшее решение, хотя и не скос.

<TextBlock Text="Hello World!">
   <TextBlock.Effect>
      <DropShadowEffect BlurRadius="2" Color="Red" Direction="0" ShadowDepth="0" />
   </TextBlock.Effect>
</TextBlock>
0 голосов
/ 02 декабря 2010

Следуя совету Огги:

<Label.Effect>
    <DropShadowEffect BlurRadius="5" 
                      Color="Red" 
                      Opacity="1" 
                      ShadowDepth="0" />
</Label.Effect>
0 голосов
/ 02 декабря 2010

Ах, хорошо, я понимаю вашу проблему лучше.

Попробуйте что-то вроде этого:

<Grid>
   <Grid.Resources>
       <OuterGlowBitmapEffect GlowColor="Blue" GlowSize="5" x:key="Glow" />
   </Grid.Resources>
   <Label Content="Blah!" BitmapEffect="{StaticResource Glow}" />
</Grid>

Я получаю "Бла!"с голубым свечением.Похоже, приличная работа вокруг, так как содержание Label не может быть установлено дважды.

Надеюсь, это поможет!

РЕДАКТИРОВАТЬ: Это не будет работать, если вы не используете Framework 3.5, поскольку BitmapEffect устарело.(

0 голосов
/ 02 декабря 2010

Насколько я знаю, это может сработать:

<Label Content="Hi there!">
<Label.BitmapEffect>
<OuterGlowBitmapEffect/>
</Label.BitmapEffect>
</Label>

Я НЕ проверял это на этикетке, но я работал для меня в других элементах управления и формах, также, проверьте все эффектысписок IntelliSense дает вам:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...