如何在WPF中绘制到DrawingContext时应用阴影效果?

时间:2011-12-28 12:09:27

标签: wpf effect drawingcontext

我正在绘制DrawingContext,我想对绘图的一部分应用阴影效果。目前,我在DrawingGroup中创建相关部分并应用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中对一堆基元应用投影?

2 个答案:

答案 0 :(得分:3)

BitmapEffect是一个旧的属性(它们使用CPU渲染的效果)来自.NET 3.5之前的版本。 4.0中的属性has no effect

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

DrawingGroup但似乎没有效果属性 - 听起来您可能需要set the effect on the parent UI element instead

答案 1 :(得分:-3)

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