如何在 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 中使所有屏幕区域变暗并点亮我打开的窗口?的主要内容,如果未能解决你的问题,请参考以下文章