Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to apply a drop shadow effect when drawing to a DrawingContext in WPF?

I'm drawing into a DrawingContext, and I'd like to apply a drop shadow effect to part of the drawing. At the moment I create the relevant parts in a DrawingGroup and apply a BitmapEffect, but this has no effect:

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);

This draws everything inside the layer correctly, but without the drop shadow effect.

What am I doing wrong / how else might I apply a drop shadow to a bunch of primitives in a DrawingContext?

like image 733
Roman Starkov Avatar asked Dec 28 '11 12:12

Roman Starkov


1 Answers

BitmapEffect is an old property (they used CPU-rendered effects) from pre .NET 3.5. The property has no effect in 4.0.

In 4.0 you should use Effect property, which uses Pixel Shaders.

DrawingGroup however doesn't appear to have an effect property - it sounds like you might need to set the effect on the parent UI element instead.

like image 87
Paul Stovell Avatar answered Sep 24 '22 15:09

Paul Stovell