How do I darken all screen area and glow my opened window in WPF?

后端 未结 4 450
花落未央
花落未央 2020-12-31 17:00

In WPF, how do I darken all screen area when opening a new window?

Also after the window is closed, how do I revert the temporary effect?

相关标签:
4条回答
  • 2020-12-31 17:16

    Decrease the opacity of the current window,

    For ex:

    {
        this.Opacity = 0.5;//Decrease opacity
        MessageBox.Show("Ur Window Darken");
        this.Opacity = 100;//Reset the opacity
    }
    
    0 讨论(0)
  • 2020-12-31 17:24

    easiest way:use XAML pop-up as described below

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

    For more details visit below link. http://www.c-sharpcorner.com/UploadFile/mahesh/using-xaml-popup-in-wpf/

    After this to blur the main grid on eventhandler for the event which shows the pop-up,set the opacity as shown in below C# code

    if (pop.IsOpen == false)    
    {    
    pop.IsOpen = true;    
    grdMain.Opacity = 0.4;    
    }    
    else    
    {    
    pop.isopen=false;    
    }    
    
    0 讨论(0)
  • 2020-12-31 17:26

    You may create a background transparent window like this:

    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();
    

    and replace MessageBox.Show("Hello"); with mywindow.ShowModal();. Possibly, you'll need to make mywindow always on top.

    Edit

    Don't use darkwindow.Hide() instead of Close().

    0 讨论(0)
  • 2020-12-31 17:34

    Here is my version, if you want gray out and blur the parent window:

    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;
        }
    
    0 讨论(0)
提交回复
热议问题