我正在绘制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中对一堆基元应用投影?
答案 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.Effect或Visual.VisualEffect(此一个受保护,因此您需要从中派生)而不是实例System.Windows.Media.Effects.DropShadowEffect。