我正在繪製一個DrawingContext
,我想將陰影效果應用於部分繪圖。目前,我創建一個DrawingGroup
相關部分和應用BitmapEffect
,但這並沒有影響:如何在繪製到WPF中的DrawingContext時應用陰影效果?
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中的一組基元?
嗯......我沒有父UI元素;這個'DrawingGroup'被直接渲染成一個'RenderTargetBitmap'。奇怪的是我如何使用UI元素進行純粹的渲染,呃?... – 2011-12-28 16:25:02
我不認爲這很奇怪 - 在內存中創建位圖時,它沒有被髮送到GPU,所以GPU不會開始運行像素着色器。舊的'BitmapEffects'沒有使用像素着色器,它們運行在CPU上,這就是爲什麼它們在這種情況下工作的原因。儘管BitmapEffects大部分時間太慢,這就是它們被廢棄的原因。 – 2011-12-30 15:07:50
在這種情況下,您可能可以使用繪圖組來填充Rectangle,並將Rectangle渲染爲RenderTargetBitmap(不要忘記先調整元素的大小) - 應該(我認爲)調用GPU來調用着色器。 – 2011-12-30 15:09:05