Сделал прямоугольник полностью прозрачным (дыра в окне) WPF - PullRequest
1 голос
/ 07 февраля 2012

У меня есть прямоугольник, который я динамически рисую в окне.У указанного окна есть фон с непрозрачностью, установленной на 0,4.Я хотел бы сделать область внутри прямоугольника полностью прозрачной (посмотрите, что за окном).

Есть ли способ сделать это?

Вот код моего окна:

    <Window x:Class="TakeAScreenzone"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="PloofTAS" Height="355" Width="539" Topmost="True"
    ResizeMode="NoResize" AllowsTransparency="True" 
    ShowInTaskbar="False" ShowActivated="True" WindowStyle="None" Background="#66FFFFFF" >
    <Grid Name="Grid1"></Grid>
</Window>

А вот код, который я использую, чтобы нарисовать мой прямоугольник (где Grid1 - главная сетка моего окна):

WorkingRectangle = New Rectangle
        WorkingRectangle.Stroke = New SolidColorBrush(Colors.Red)
        WorkingRectangle.StrokeThickness = 1
        WorkingRectangle.Fill = Nothing 
        WorkingRectangle.HorizontalAlignment = Windows.HorizontalAlignment.Left
        WorkingRectangle.VerticalAlignment = Windows.VerticalAlignment.Top
        Grid1.Children.Add(WorkingRectangle)

Ответы [ 2 ]

4 голосов
/ 07 февраля 2012

Полагаю, вы можете использовать следующий подход (здесь я создал прямоугольное отверстие в центре окна):

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="PloofTAS" Height="355" Width="539" Topmost="True"
ResizeMode="NoResize" AllowsTransparency="True" 
ShowInTaskbar="False" ShowActivated="True" WindowStyle="None" Background="Transparent">
    <Grid Name="Grid1">
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Rectangle Fill="#66FFFFFF" Grid.Column="0" Grid.RowSpan="3"/>
        <Rectangle Fill="#66FFFFFF" Grid.Column="2" Grid.RowSpan="3"/>
        <Rectangle Fill="#66FFFFFF" Grid.Column="1" Grid.Row="0"/>
        <Rectangle Fill="#66FFFFFF" Grid.Column="1" Grid.Row="2"/>
        <Rectangle x:Name="workingRectangle" Fill="Transparent" Stroke="Red" Grid.Column="1" Grid.Row="1"/>
    </Grid>
</Window>
0 голосов
/ 07 февраля 2012

Сделайте внутренний прямоугольник Маска непрозрачности .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...