从最小化状态恢复表单时,WS_EX_COMPOSITED会导致无休止的重新绘制



从最小化状态恢复时,Form需要无休止的时间重新绘制
Form是无边界的。我正在覆盖WndProcCreateParms
我正在将无边界Form从最小化状态恢复到正常状态
I正在重写CreateParms方法以删除阴影并停止闪烁

protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
m_aeroEnabled = CheckAeroEnabled();
if (!m_aeroEnabled)
cp.ClassStyle |= CS_DROPSHADOW;
cp.Style |= WS_MINIMIZEBOX;             
cp.ExStyle |= 0x02000000; //WS_EX_COMPOSITED                
cp.ClassStyle |= CS_DBLCLKS;
return cp;
}
}

删除cp.ExStyle|=0x02000000时问题消失,但随后出现闪烁问题。

编辑:添加似乎导致问题的自定义控件的代码:

public partial class BorderPanel : Panel
{
public BorderPanel()
{
}
protected override void OnPaint(PaintEventArgs pe)
{
ControlPaint.DrawBorder(pe.Graphics, this.ClientRectangle, 
BorderColor, borderSize.Left, ButtonBorderStyle.Solid,
BorderColor, borderSize.Top, ButtonBorderStyle.Solid, 
BorderColor, borderSize.Right, ButtonBorderStyle.Solid, 
BorderColor, borderSize.Bottom, ButtonBorderStyle.Solid);
base.OnPaint(pe);
}
}

我和你一样也遇到了同样的问题,我解决了这个问题。将表单设计中的TrasnsparencyKey从黑色更改为另一种颜色,但不是黑色,尝试一种你没有使用的颜色。

最新更新