【问题标题】:WPF/Silverlight Text EffectWPF/Silverlight 文字效果
【发布时间】:2010-02-21 18:14:02
【问题描述】:

请注意,图像下方的 1px 突出显示在灰色面板中的文本下方。使用 WPF/Silverlight 如何实现这一点?

Valid XHTML http://www.iconpaper.org/preview/10012101b.jpg.

【问题讨论】:

  • 您是否可以访问产生这些内容的来源?这是什么软件?
  • 不是,我只是在网上看到图片,知道这个效果在 Mac 上用的很多。

标签: .net wpf silverlight xaml user-interface


【解决方案1】:

在 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>

【讨论】:

  • 我说的是文字。文字下方的 1 像素白线。
  • 使用投影效果还是可以达到的,谢谢。
【解决方案2】:

我在尝试自己弄清楚如何做到这一点时偶然发现了这一点。

在我的例子中,我没有控制原始应用程序(顺便说一句,Visual Studio),当我应用任何其他 WPF 元素时,结果很奇怪,“辉光阴影”从文本中完全删除。我永远无法弄清楚如何让它工作,所以我为此编写了一个 ShaderEffect。

您可以下载项目from its repo

要使用它,请将效果直接应用于文本元素(标签、文本块等):

<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 中的适当位置并引用该项目。

我所包含的参数实际上是默认值,所以除非你需要调整它,否则你可以不使用它们。

我的目标是实现作为 HLSL/WPF ShaderEffect 实现的性能良好的凿子(或斜角,如果 Size 设置为负数)。它是 PixelShader 2.0,所以它应该可以与 Silverlight 一起使用,虽然我没有亲自测试过。

完整的文档是here,它的配置看起来比默认设置更微妙,但这里是简短版本:

大小 - 发光/阴影的像素大小(0.5 会在下面产生可见的发光;上面的阴影非常微妙,在示例中的深色文本中是不可见的)。使用负数获得斜角。

Glow/ShadowIntensity - 增加/减少效果。同时增加两者会使文本保持其原始颜色,增加一个或另一个会影响渲染文本的颜色和效果的强度。

MixDivisor - 将文本和效果混合到背景中。 3.0 是一个非常微妙的混合,2.0 根本没有。如果文本将位于图像顶部或背景不一致,则将数字增加到 3.0 以上会很有用,但会导致文本与背景的对比度较低。对于这个用例,强度和除数协同工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    相关资源
    最近更新 更多