如何通过DWM处理调整大小? C#

时间:2014-08-26 20:44:36

标签: c# resize flicker aero dwm

我尝试为我的应用程序创建一个自定义边框少的表单。我决定它必须是可调整大小的,所以我在其两侧放置了8个面板(实际上是4个角,4个边)并创建了代码,这些代码将在调用时调整我的形状。比如,例如:

    private void E_MouseDown(object sender, MouseEventArgs e)
    {
        Active = true;
    }
    private void East_MouseMove(object sender, MouseEventArgs e)
    {
        if (Active)
        {
            this.Size = new Size(this.Width + e.Location.X, this.Height);
            this.Refresh();

        }
    }
    private void E_MouseUp(object sender, MouseEventArgs e)
    {
        Active = false;
    }

不幸的是,调整大小很慢,CPU过载并且即使对打开的表单进行双缓冲也会执行视觉故障。我的表单上有很多控件。但我注意到的事实是,当我切换到标准边框(如Sizable),并且DWM处理窗口镶边时,调整大小是完美的。没有毛刺,口吃和闪烁。所以我开始怀疑,Windows如何设法做到?有没有办法通过8个面板模拟它正在做什么?我讨厌它什么时候闪烁,它无缘无故地停止了我的项目。事实上,我整天都在模仿Visual Studio 2013窗口镀铬并几乎成功,只有这个令人讨厌的问题......你能帮忙吗?

感谢。

0 个答案:

没有答案