在覆盖WPF中创建透明孔

Mik*_*ike 2 .net wpf wpf-controls

我试图在WPF中复制下面的效果.我有一个网格控件,其中边框背景颜色为#000000,不透明度为0.7,内容呈现方式如此......

<Grid>
    <Border Background="#000000" Opacity="0.7" />
    <ContentPresenter ... />
</Grid>
Run Code Online (Sandbox Code Playgroud)

我为我的控制内容设置了一个椭圆以试图获得效果,但我已经从那里到达了一个路障.

<Control:SomeControl>
    <Ellipse Fill="Transparent" />
</Control:SomeControl>
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

在此输入图像描述

Cle*_*ens 5

您可以设置Clipoverlay元素的属性(如下面的Rectangle).请注意,叠加层必须位于其他元素之上.

<Grid>
    <TextBlock Margin="80,80" Text="Some Text" FontSize="32"/> 
    <Rectangle Fill="Black" Opacity="0.7">
        <Rectangle.Clip>
            <CombinedGeometry GeometryCombineMode="Exclude">
                <CombinedGeometry.Geometry1>
                    <RectangleGeometry Rect="0,0,10000,10000"/>
                </CombinedGeometry.Geometry1>
                <CombinedGeometry.Geometry2>
                    <EllipseGeometry Center="100,100" RadiusX="50" RadiusY="50"/>
                </CombinedGeometry.Geometry2>
            </CombinedGeometry>
        </Rectangle.Clip>
    </Rectangle>
</Grid>
Run Code Online (Sandbox Code Playgroud)