我有一个包含这些值的窗口:
WindowState="Maximized"
AllowsTransparency="True"
Opacity="0.5"
WindowStyle="None"
此窗口位于其他窗口(作为弹出窗口)之上,其内容位于特定位置。
我有一个新要求。这个窗口必须从下面的窗口中显示一个矩形区域。换句话说,我必须在这个窗口中设置一个完全透明的“洞”(没有不透明度值)。直到此刻,我想不出办法来制作这个透明的洞。
希望能给个思路...
我有一个包含这些值的窗口:
WindowState="Maximized"
AllowsTransparency="True"
Opacity="0.5"
WindowStyle="None"
此窗口位于其他窗口(作为弹出窗口)之上,其内容位于特定位置。
我有一个新要求。这个窗口必须从下面的窗口中显示一个矩形区域。换句话说,我必须在这个窗口中设置一个完全透明的“洞”(没有不透明度值)。直到此刻,我想不出办法来制作这个透明的洞。
希望能给个思路...
我找到了一种解决方案:
这是另一个窗口顶部的弹出窗口,并且在所需位置包含另一个窗口的孔:
窗口标题:
WindowState="Maximized"
AllowsTransparency="True"
WindowStyle="None"
窗口内容:
<Window.Background >
<SolidColorBrush x:Name="BackgroundBrush" Color="WhiteSmoke" Opacity="0" ></SolidColorBrush>
</Window.Background>
<Canvas x:Name="ContectHolder" >
<Path Stroke="Black" Fill="WhiteSmoke" Opacity="0.8">
<Path.Data>
<CombinedGeometry GeometryCombineMode="Exclude">
<CombinedGeometry.Geometry1 >
<RectangleGeometry Rect="0,0,2000,2000" />
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<RectangleGeometry Rect="75,75,400,900" />
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Path.Data>
</Path>
</Canvas>
尽量避免 AllowsTransparency=true,这是非常错误和缓慢的。
您可以 PInvoke SetWindowRgn 创建任何形状的窗口: