为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 WPF 窗口中“打孔”

如何在 WPF 窗口中“打孔”

C#
慕虎7371278 2022-10-15 15:17:36
我现在开始使用 WPF,我不知道它是否可能,但它应该是。我试图在我的表单中创建一个完全透明的区域,删除一个矩形内的所有内容(这些内容将是 AxWindowsMediaPlayer,如下所示),并且能够看到我的窗口后面的内容。它可以在 WinForms 中使用 TransparencyKey 和面板,但 WinForms 并不能满足我对这个项目的需求。例子:另一个例子:https://i.stack.imgur.com/I15Jg.gif
查看完整描述

4 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

这应该为您解决问题:


<Window

        [...]

        Title="MainWindow" MinHeight="200" MinWidth="400" WindowStyle="None" AllowsTransparency="True">

    <Window.OpacityMask>

        <ImageBrush                                                 

        ViewportUnits="RelativeToBoundingBox"

        TileMode="None" 

        ImageSource="/Images/rect.png"

        />

    </Window.OpacityMask>

 <!-- many many controls-->

</Window>

WindowStyle不需要


AllowTransparency必须是真的


并且图像源只是一个中间有一个矩形透明部分的图像。你也可以动态地画这个!


结果:

//img1.sycdn.imooc.com//634a5ed30001419b13150846.jpg

查看完整回答
反对 回复 2022-10-15
?
动漫人物

TA贡献1815条经验 获得超10个赞

屏蔽可能是最接近 Windows 窗体的TransparencyKey.



查看完整回答
反对 回复 2022-10-15
?
森林海

TA贡献2011条经验 获得超2个赞

 <Window x:Class="WpfApp5.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:WpfApp5"

    mc:Ignorable="d"

    Title="MainWindow" Height="450" Width="800"

    WindowStyle="None"

    Opacity="0.1"

    AllowsTransparency="True">   

 </Window>

使 WindowStyle="None" 和 AllowsTransparency="True" 获得透明窗口。改变不透明度以获得透明度


查看完整回答
反对 回复 2022-10-15
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

得到了这样的东西。


<Window x:Class="WpfApp3.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"

    mc:Ignorable="d"

    Title="MainWindow" Height="450" Width="800" WindowStyle="None" AllowsTransparency="True" Background="Transparent">

<Grid>

    <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>


查看完整回答
反对 回复 2022-10-15
  • 4 回答
  • 0 关注
  • 147 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号