繁体   English   中英

如何在不点击的情况下制作透明的 WPF 应用程序?

[英]How to make transparent WPF app without making it click-through?

你能告诉我如何在 WPF 中制作透明的 window 而不使其点击吗? 我已经为此苦苦挣扎了很长时间。

除了自定义 window 布局的常用AllowsTransparency="True"WindowStyle="None"外,在 Window 上添加Background="#01FFFFFF" 任何未显式绘制的部分将显示为(几乎)透明(在深色背景下会有非常微弱的阴影),但这些区域将捕获鼠标点击,从而阻止点击其他 windows。

以下是如何创建具有空心部分的非矩形 window 的示例

空心视图.xaml

<Window
    x:Class="CustomWindowChromeDemo.HollowView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    AllowsTransparency="True"
    Background="#01ffffff"
    WindowStyle="None">

    <Grid
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch">
        <Path
            Data="F0 M 0,0 L 10,0 L 5,10 z M 4,2 A 1,1 0 0 0 3,3 L 3,4 A 1,1 0 0 0 4,5 L 6,5 A 1,1 0 0 0 7,4 L 7,3 A 1,1 0 0 0 6,2 z"
            Fill="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"
            Stretch="Uniform"
            Stroke="{DynamicResource {x:Static SystemColors.ActiveBorderBrushKey}}"
            StrokeThickness="4" />

        <TextBlock
            Margin="0,20,0,0"
            HorizontalAlignment="Center"
            FontSize="16"
            Text="Click+Drag to move ..." />

        <Button
            Margin="0,0,0,80"
            HorizontalAlignment="Center"
            VerticalAlignment="Bottom"
            Click="CloseButtonClick"
            Content="Close" />
    </Grid>
</Window>

HollowView.xaml.cs

public partial class HollowView
{
    public HollowView()
    {
        InitializeComponent();
        MouseLeftButtonDown += (s, e) => DragMove();
    }

    private void CloseButtonClick(object sender, System.Windows.RoutedEventArgs e)
    {
        Close();
    }
}

用法

private void btnShowHollowWindow_Click(object sender, RoutedEventArgs e)
{
    var hollowView = new HollowView
    {
        Width = 300,
        Height = 300,
        Owner = this,
        WindowStartupLocation = WindowStartupLocation.CenterOwner
    };

    hollowView.ShowDialog();
}

有关 WPF 中自定义 windows 布局的更多详细信息,请查看我的博客文章

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM