9

我正在绘制DrawingContext,并且我想将阴影效果应用于绘图的一部分。目前我在 a 中创建相关部分DrawingGroup并应用 a BitmapEffect,但这没有效果:

var layer = new DrawingGroup();
using (var lcontext = layer.Open())
{
    // draw stuff in lcontext
}
layer.BitmapEffect = new DropShadowBitmapEffect { Color = Colors.Black, ShadowDepth = 3, Opacity = 0.5 };
context.DrawDrawing(layer);

这将layer正确绘制内部的所有内容,但没有阴影效果。

我在做什么错/我还能如何将阴影应用于 DrawingContext 中的一堆图元?

4

2 回答 2

3

BitmapEffect是 .NET 3.5 之前的旧属性(他们使用 CPU 渲染效果)。该属性在 4.0 中无效。

在 4.0 中,您应该使用Effect属性,它使用像素着色器。

DrawingGroup但是似乎没有效果属性 - 听起来您可能需要在父 UI 元素上设置效果

于 2011-12-28T15:44:15.987 回答
-3

如果您在 .NET Framework 3.5 SP1 或更高版本上运行,则应使用UIElement.EffectVisual.VisualEffect(这个受到保护,因此您需要从它派生),并使用System.Windows.Media 的实例。 Effects.DropShadowEffect

于 2012-03-07T10:45:28.767 回答