我正在绘制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中应用一个阴影到一堆原语?
BitmapEffect
是。net 3.5之前的一个旧属性(他们使用cpu渲染效果)。该属性在4.0版本中无效。
在4.0你应该使用Effect
属性,它使用像素着色器。
DrawingGroup
似乎没有效果属性-听起来你可能需要在父UI元素上设置效果。
如果你运行的是。net Framework 3.5 SP1或更高版本,你应该使用UIElement。效果或视觉。VisualEffect(这个是受保护的,所以你需要从它派生),用system . windows . media . effects . dropshadowweeffect .