Как применить эффект тени при рисовании в DrawingContext в WPF? - PullRequest
9 голосов
/ 28 декабря 2011

Я рисую в 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 ]

3 голосов
/ 28 декабря 2011

BitmapEffect - это старое свойство (они использовали эффекты рендеринга процессора) из pre .NET 3.5.Свойство не имеет эффекта в 4.0.

В 4.0 вы должны использовать свойство Effect, в котором используются пиксельные шейдеры.

DrawingGroup однако, похоже, не имеет свойства эффекта - похоже, вам может понадобиться установить эффект на родительский элемент пользовательского интерфейса вместо .

0 голосов
/ 07 марта 2012

Если вы работаете в .NET Framework 3.5 с пакетом обновления 1 (SP1) или более поздней версии, вам следует использовать UIElement.Effect или Visual.VisualEffect (этот параметр защищен, поэтому вам нужно получить его вместо этого) вместо этого с экземпляром System.Windows.Media.Effects.DropShadowEffect .

...