如何在WPF中绘制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中应用一个阴影到一堆原语?

BitmapEffect是。net 3.5之前的一个旧属性(他们使用cpu渲染效果)。该属性在4.0版本中无效。

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

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

如果你运行的是。net Framework 3.5 SP1或更高版本,你应该使用UIElement。效果或视觉。VisualEffect(这个是受保护的,所以你需要从它派生),用system . windows . media . effects . dropshadowweeffect .

的实例代替

最新更新