【发布时间】:2013-01-08 05:09:15
【问题描述】:
问题如下:我们有一个应用程序,它在一个名为 Display 的控件中显示实时图像。显示控件内的实时图像顶部可以有(可能是交互式的)层(Display 控件基本上是一个底部有LiveImageLayer 的网格)。大多数可用图层由线条图形组成,不会遮挡图像。一些图层由标准 WPF 控件组成,例如按钮或滑块(使用更改的模板,因此它们使用线条图形呈现)。有些图层甚至直接使用 DrawingContext 绘制。
为了提高实时嘈杂图像上图层图形的可见性和可读性,我们尝试为图层添加DropShadow 效果。从视觉的角度来看,这非常有效。但是,从性能的角度来看,它非常糟糕。由于 ImageLayer 的快速更新(高达 60Hz),DropShadow 效果会以图像更新频率为所有图层重新计算(即使图层本身没有改变)。
我们可以为每个图层手动实现老式阴影(相同的图形,下方带有黑色笔刷,向右下方移动)。如果没有更好的方法,我们实际上会这样做。
所以,我的问题是:是否有任何自动或半自动的方式来实现这种阴影?我想在实际图层下方创建移动矩形,该笔刷设置为实际图层的视觉笔刷。但是,我发现没有办法(除了效果)将视觉画笔重新着色为黑色。
有什么想法吗?
【问题讨论】: