以下のようなことを試して、いくつかのマウス イベント ハンドラーで 2 番目の RectangleGeometry (selectRect) のサイズと位置を動的に変更します。また、最初の RectangleGeometry のサイズを画面サイズに調整することもできます。
<Window x:Class="TransparentRectangle.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowStyle="None" WindowState="Maximized"
AllowsTransparency="True" Background="Transparent">
<Grid>
<Path Fill="Black" Opacity="0.5">
<Path.Data>
<CombinedGeometry GeometryCombineMode="Exclude">
<CombinedGeometry.Geometry1>
<RectangleGeometry x:Name="screenRect" Rect="0,0,2000,2000"/>
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<RectangleGeometry x:Name="selectRect" Rect="100,100,200,100"/>
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Path.Data>
</Path>
</Grid>
</Window>
ただし、CombinedGeometry の除外された部分でマウス イベントを取得できないという問題が発生する可能性があります。これを回避するには、マウス ハンドラーを (パスではなく) ウィンドウにアタッチし、背景をほぼ透明にします。
<Window ... Background="#01000000" MouseMove=... etc>
...
</Window>
編集:さらに簡単な解決策は、ボーダーかもしれません。BorderThickness の 4 つのコンポーネントを個別に調整できます。
<Grid ...>
<Border BorderBrush="Black" Opacity="0.5" BorderThickness="100,100,200,400"/>
</Grid>