9

に描画していDrawingContextますが、描画の一部にドロップ シャドウ効果を適用したいと考えています。現時点では、関連するパーツを a に作成して aDrawingGroupを適用しています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 のプリミティブの束にドロップ シャドウを適用するにはどうすればよいですか?

4

2 に答える 2

3

BitmapEffect.NET 3.5 より前の古いプロパティ (CPU レンダリング効果を使用) です。このプロパティは4.0 では効果がありません。

4.0Effectでは、ピクセル シェーダーを使用するプロパティを使用する必要があります。

DrawingGroupただし、エフェクト プロパティはないようです。代わりに、親 UI 要素にエフェクトを設定する必要があるようです。

于 2011-12-28T15:44:15.987 に答える
-3

.NET Framework 3.5 SP1 以降で実行している場合は、代わりにUIElement.EffectまたはVisual.VisualEffect (これは保護されているため、そこから派生させる必要があります) をSystem.Windows.Media のインスタンスと共に使用する必要があります。 Effects.DropShadowEffect

于 2012-03-07T10:45:28.767 に答える