C#WPF Animate最小化/最大化/恢复自定义窗口(WindowStyle.None&& allowsTransparency = true)

时间:2016-10-05 08:20:22

标签: c# wpf

正如我的标题所说,我需要为这种窗口制作动画。我实际捕获了WM_SYSCOMMAND并定义了特定的WindowState。

CodeSnippet:

    private System.IntPtr WindowProc(System.IntPtr hwnd, int msg, System.IntPtr wParam, System.IntPtr lParam,ref bool handled)
    {
        var retVal = IntPtr.Zero;

        switch (msg) //http://www.mycsharp.de/wbb2/thread.php?postid=111901 Auflistung der WndProc-Message-Kommandos 
        {           
            case 0x0112: //https://msdn.microsoft.com/de-de/library/windows/desktop/ms646360(v=vs.85).aspx //WM_SYSCOMMAND message
                if ((int)wParam == 0xF120) //SC_RESTORE | Restores the window to its normal position and size.
                {
                    WindowState = WindowState.Normal;
                    handled = true;
                }
                else if ((int) wParam == 0xF030) //SC_MAXIMIZE | Maximizes the window.
                {
                    WindowState = WindowState.Maximized;
                    handled = true;
                }
                else if ((int) wParam == 0xF020) //SC_MINIMIZE | Minimizes the window.
                {
                    WindowState = WindowState.Minimized;
                    handled = true;
                }
                break;
        }

        return retVal;
    }

我应该手动制作故事板并计算新的大小和方向吗?或者有其他方法可以解决我的问题吗?

在WindowState无法解决之前更改WindowStyle,因为" AllowTransparency = true"

此致

编辑:

我制作了一个全新的风格,应用程序总是具有相同的外观(在每个操作系统上)。

激活窗口:

Window activated

停用窗口:

Window deactivated

窗口语言:

Window deactivated

在任务栏上有一个用于切换语言的组合框。打开/关闭窗口也有淡入/淡出效果。

0 个答案:

没有答案