Текстовый эффект WPF / Silverlight - PullRequest
2 голосов
/ 21 февраля 2010

Обратите внимание на изображение под выделением 1px под текстом на серой панели. Как этого можно достичь с помощью WPF / Silverlight?

Действительный XHTML http://www.iconpaper.org/preview/10012101b.jpg.

Ответы [ 2 ]

5 голосов
/ 21 февраля 2010

В Silverlight 3 это называется эффектом DropShadow.

Например.

  <Border Height="300" Width="300" Background="Gray">
        <Border.Effect>
            <DropShadowEffect Opacity="0.34" ShadowDepth="9" Direction="542" BlurRadius="9"/>
        </Border.Effect>
  </Border>
0 голосов
/ 28 июня 2015

Я наткнулся на это, пытаясь понять, как это сделать сам.

В моем случае я не управлял исходным приложением (кстати, Visual Studio), и когда я применял какие-либо дополнительные элементы WPF, результат был странным, так как «свечение» было полностью удалено из текста. Я никогда не мог понять, как заставить это работать, поэтому я написал ShaderEffect специально для этого.

Вы можете скачать проект из репозитория .

Чтобы использовать его, примените эффект непосредственно к текстовому элементу (метка, текстовый блок и т. Д.):

<Label Content="My Label Content">
    <Label.Effect>
        <effects:ChiseledTextEffect 
                 ShadowIntensity="1" GlowIntensity="1" Size="0.5" MixDivisor="3" />
    </Label.Effect>
</Label>

Конечно, включают в себя:

xmlns:effects="clr-namespace:Diagonactic.WPF.Effects;assembly=Diagonactic.WPF"

... в соответствующем месте в вашем XAML и ссылаться на проект.

Параметры, которые я включил, на самом деле являются настройками по умолчанию, поэтому вы можете оставить их, если вам не нужно настраивать их.

Моей целью было создание хорошо работающего долота (или фаски, если для параметра Size задано отрицательное число), реализованного как HLSL / WPF ShaderEffect. Это PixelShader 2.0, поэтому он должен работать с Silverlight, хотя я лично не тестировал его.

Полная документация: здесь и есть скриншот того, как он выглядит настроенным, немного более тонким, чем настройки по умолчанию, но вот краткая версия:

Размер - размер в пикселях для свечения / тени (0,5 создаст видимое свечение снизу; тень выше очень тонкая и будет невидимой в темном тексте, как в образце). Используйте отрицательное число, чтобы получить скос.

Glow / ShadowIntensity - увеличивает / уменьшает эффект. Одновременное увеличение обоих значений оставляет текст в его исходном цвете, увеличение одного или другого будет влиять на цвет отображаемого текста и интенсивность эффекта.

MixDivisor - смешивает текст и эффект в фоновом режиме. 3.0 - очень тонкая смесь, 2.0 - вообще нет. Увеличение числа выше 3,0 полезно, если текст будет располагаться поверх изображения или несогласованного фона, но в результате текст будет контрастировать с фоном. Интенсивности и делитель работают вместе для этого варианта использования.

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