如何在 WPF 中使所有屏幕区域变暗并点亮我打开的窗口?

Posted

技术标签:

【中文标题】如何在 WPF 中使所有屏幕区域变暗并点亮我打开的窗口?【英文标题】:How do I darken all screen area and glow my opened window in WPF? 【发布时间】:2011-05-30 01:13:50 【问题描述】:

在 WPF 中,如何在打开新窗口时使所有屏幕区域变暗?

还有关闭窗口后,如何恢复临时效果?

【问题讨论】:

您可以查看此链接:***.com/questions/5825527/… 【参考方案1】:

这是我的版本,如果你想变灰并模糊父窗口:

private void btnOpenSettings_Click(object sender, RoutedEventArgs e)
    
        // settings for the parent window
        // set the transparency to the half
        this.Opacity = 0.5;
        // blur the whole window
        this.Effect = new BlurEffect();

        // Set the options for the settings (child) window
        SettingsForm wdwSettings = new SettingsForm() 
         
            Owner = this,
            ShowInTaskbar = false,
            Topmost = true
        ;

        // Open the child window
        wdwSettings.ShowDialog();

        //restore Opacity and remove blur after closing the child window
        this.Opacity = 1;
        this.Effect = null;
    

【讨论】:

它工作得很好,但是一旦 ShowDialog() 关闭,我怎样才能回到原来的状态? 没关系 :) this.Effect = null;恢复正常【参考方案2】:

你可以像这样创建一个背景透明窗口:

var darkwindow = new Window() 
                            Background = Brushes.Black,
                            Opacity = 0.4,
                            AllowsTransparency = true,
                            WindowStyle = WindowStyle.None,
                            WindowState = WindowState.Maximized,
                            Topmost = true
                        ;
darkwindow.Show();
MessageBox.Show("Hello");
darkwindow.Close();

并将MessageBox.Show("Hello"); 替换为mywindow.ShowModal();。可能,您需要将mywindow 始终放在首位。

编辑

不要使用 darkwindow.Hide() 而不是 Close()。

【讨论】:

感谢 Mykola Bogdiuk。我在窗口上创建了一个深色透明边框,然后我显示了新窗口【参考方案3】:

降低当前窗口的不透明度,

例如:


    this.Opacity = 0.5;//Decrease opacity
    MessageBox.Show("Ur Window Darken");
    this.Opacity = 100;//Reset the opacity

【讨论】:

简单解决方案【参考方案4】:

最简单的方法:如下所述使用 XAML 弹出窗口

<Popup x:Name="pop" IsOpen="False" >

</Popup> 

有关详细信息,请访问以下链接。 http://www.c-sharpcorner.com/UploadFile/mahesh/using-xaml-popup-in-wpf/

在此之后为显示弹出窗口的事件模糊事件处理程序上的主网格,设置不透明度如下 C# 代码所示

if (pop.IsOpen == false)    
    
pop.IsOpen = true;    
grdMain.Opacity = 0.4;    
    
else    
    
pop.isopen=false;    
    

【讨论】:

以上是关于如何在 WPF 中使所有屏幕区域变暗并点亮我打开的窗口?的主要内容,如果未能解决你的问题,请参考以下文章

在 OS X 上防止屏幕变暗和显示睡眠

如何在 jQuery Mobile 中使覆盖面板后面变暗?

Jquery - 使整个页面变暗并淡出一个 div 元素

如何在 CSS 中使背景图像变暗? [复制]

在深色页面上显示模态 DIV

安卓如何让屏幕变暗而不是关闭屏幕?