Я пытаюсь создать эффект, похожий на функцию Lights out/lights dim в Adobe Lightroom (http://www.youtube.com/watch?v=87hNd3vaENE), за исключением WPF.
Я попытался создать еще одно окно поверх моего существующего окна, сделать его прозрачным и поместить на него полупрозрачную геометрию пути. Но я хочу, чтобы события мыши могли проходить через это полупрозрачное окно (на окна ниже).
Это упрощенная версия того, что у меня есть:
<Window x:Class="LightsOut.MaskWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
AllowsTransparency="True"
WindowStyle="None"
ShowInTaskbar="False"
Topmost="True"
Background="Transparent">
<Grid>
<Button HorizontalAlignment="Left" Height="20" Width="60">click</Button>
<Path IsHitTestVisible="False" Stroke="Black" Fill="Black" Opacity="0.3">
<Path.Data>
<RectangleGeometry Rect="0,0,1000,1000 "/>
</Path.Data>
</Path>
</Grid>
Окно полностью прозрачное, поэтому в местах, где путь не распространяется, события мыши проходят прямо. Все идет нормально. Для объекта пути IsHitTestvisible установлено значение false. Таким образом, события мыши пройдут через него к другим элементам управления в той же форме (т.е. Вы можете щелкнуть по кнопке, потому что она находится на одной и той же форме).
Но события мыши не пройдут через объект Path в окнах, которые находятся ниже.
Любые идеи? Или лучшие способы решения этой проблемы?
Спасибо.