C# 使窗口的特定部分不可见

C# 使窗口的特定部分不可见,c#,wpf,C#,Wpf,我想创建一些类似windows的剪贴工具。 我有一个窗口,它用半透明层覆盖屏幕。用户可以通过拖动鼠标来定义屏幕截图的区域(他绘制了一个矩形,就像在windows剪切工具中一样)。我的问题是:如何使窗口部分完全透明,以便用户可以清楚地看到屏幕截图的区域 以下是我目前的代码: <Window x:Class="SnippingToolPro.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentat

我想创建一些类似windows的剪贴工具。 我有一个窗口,它用半透明层覆盖屏幕。用户可以通过拖动鼠标来定义屏幕截图的区域(他绘制了一个矩形,就像在windows剪切工具中一样)。我的问题是:如何使窗口部分完全透明,以便用户可以清楚地看到屏幕截图的区域

以下是我目前的代码:

<Window x:Class="SnippingToolPro.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" 
    Width="525" 
    Height="350" 
    AllowsTransparency="True" 
    WindowStyle="None" 
    ResizeMode="NoResize"
    WindowStartupLocation="CenterScreen"
    WindowState="Maximized"
    Opacity="0.5">
<Canvas>

</Canvas>

对中间的“洞”有什么建议吗?< /P> <代码>
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApplication1"
        AllowsTransparency="True"
        WindowStyle="None"
        Background="Transparent">
    <Grid Background="Transparent">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="20"/>
            <ColumnDefinition/>
            <ColumnDefinition  Width="20"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="20"/>
            <RowDefinition/>
            <RowDefinition Height="20"/>
        </Grid.RowDefinitions>
        <Rectangle Fill="Red" Grid.ColumnSpan="3"/>
        <Rectangle Fill="Red" Grid.ColumnSpan="3" Grid.Row="2"/>
        <Rectangle Fill="Red" Grid.Row="1"/>
        <Rectangle Fill="Red" Grid.Row="1" Grid.Column="2"/>
        <Rectangle Grid.Column="1" Grid.Row="1" Cursor="Wait" Fill="Black" Opacity=".01" IsHitTestVisible="True"/>
    </Grid>
</Window>

红色矩形仅用于显示边界。内部矩形表示要执行选择的区域

通常,剪切工具会创建一个全屏窗口,其中显示屏幕截图而不是实际屏幕。换句话说,它们不使用透明效果。播放视频并启动剪贴工具时可以看到这一点。你会看到视频的一个静止帧。你说得对!好建议,但即使我这么做,我也有同样的问题,对吗?不,你没有。您只需在屏幕截图顶部显示一个遮罩。根据矩形的不同,这个遮罩会有所变化。对我来说似乎是最好的解决方案。谢谢